Browse Source

publish muk_utils - 12.0

pull/9/head
MuK IT GmbH 6 years ago
parent
commit
aa1a93adb4
  1. 2
      muk_utils/__manifest__.py
  2. 68
      muk_utils/tests/common.py
  3. 1
      muk_utils/tools/__init__.py
  4. 6
      muk_utils/tools/file.py
  5. 35
      muk_utils/tools/http.py

2
muk_utils/__manifest__.py

@ -20,7 +20,7 @@
{ {
"name": "MuK Utils", "name": "MuK Utils",
"summary": """Utility Features""", "summary": """Utility Features""",
"version": '12.0.1.1.0',
"version": '12.0.1.1.1',
"category": 'Extra Tools', "category": 'Extra Tools',
"license": "AGPL-3", "license": "AGPL-3",
"author": "MuK IT", "author": "MuK IT",

68
muk_utils/tests/common.py

@ -0,0 +1,68 @@
###################################################################################
#
# Copyright (C) 2017 MuK IT GmbH
#
# Odoo Proprietary License v1.0
#
# This software and associated files (the "Software") may only be used
# (executed, modified, executed after modifications) if you have
# purchased a valid license from the authors, typically via Odoo Apps,
# or if you have received a written agreement from the authors of the
# Software (see the COPYRIGHT file).
#
# You may develop Odoo modules that use the Software as a library
# (typically by depending on it, importing it and using its resources),
# but without copying any source code or material from the Software.
# You may distribute those modules under the license of your choice,
# provided that this license is compatible with the terms of the Odoo
# Proprietary License (For example: LGPL, MIT, or proprietary licenses
# similar to this one).
#
# It is forbidden to publish, distribute, sublicense, or sell copies of
# the Software or modified copies of the Software.
#
# The above copyright notice and this permission notice must be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
###################################################################################
import os
import time
import hmac
import hashlib
import logging
from odoo.tests import common, HOST, PORT
_path = os.path.dirname(os.path.dirname(__file__))
_logger = logging.getLogger(__name__)
class HttpCase(common.HttpCase):
def csrf_token(self, time_limit=3600):
token = self.session.sid
max_ts = '' if not time_limit else int(time.time() + time_limit)
msg = '%s%s' % (token, max_ts)
secret = self.env['ir.config_parameter'].sudo().get_param('database.secret')
assert secret, "CSRF protection requires a configured database secret"
hm = hmac.new(secret.encode('ascii'), msg.encode('utf-8'), hashlib.sha1).hexdigest()
return '%so%s' % (hm, max_ts)
def url_open(self, url, data=None, timeout=10, csrf=False):
if url.startswith('/'):
url = "http://%s:%s%s" % (HOST, PORT, url)
if data:
if csrf:
data.update({'csrf_token': self.csrf_token()})
return self.opener.post(url, data=data, timeout=timeout)
return self.opener.get(url, timeout=timeout)

1
muk_utils/tools/__init__.py

@ -21,3 +21,4 @@ from . import file
from . import json from . import json
from . import cache from . import cache
from . import types from . import types
from . import http

6
muk_utils/tools/file.py

@ -18,13 +18,16 @@
################################################################################### ###################################################################################
import os import os
import re
import io import io
import sys
import base64 import base64
import shutil import shutil
import urllib import urllib
import logging import logging
import tempfile import tempfile
import mimetypes import mimetypes
import unicodedata
from odoo.tools.mimetypes import guess_mimetype from odoo.tools.mimetypes import guess_mimetype
@ -61,7 +64,8 @@ def unique_name(name, names, escape_suffix=False):
return name return name
def unique_files(files): def unique_files(files):
ufiles = unames = []
ufiles = []
unames = []
for file in files: for file in files:
uname = unique_name(file[0], unames, escape_suffix=True) uname = unique_name(file[0], unames, escape_suffix=True)
ufiles.append((uname, file[1])) ufiles.append((uname, file[1]))

35
muk_utils/tools/http.py

@ -0,0 +1,35 @@
###################################################################################
#
# Copyright (C) 2018 MuK IT GmbH
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
###################################################################################
import logging
from werkzeug.datastructures import CombinedMultiDict
_logger = logging.getLogger(__name__)
#----------------------------------------------------------
# Werkzeug Helper
#----------------------------------------------------------
def request_params(httprequest):
return CombinedMultiDict([
httprequest.args,
httprequest.form,
httprequest.files
])
Loading…
Cancel
Save