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. 3
      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",
"summary": """Utility Features""",
"version": '12.0.1.1.0',
"version": '12.0.1.1.1',
"category": 'Extra Tools',
"license": "AGPL-3",
"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)

3
muk_utils/tools/__init__.py

@ -20,4 +20,5 @@
from . import file
from . import json
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 re
import io
import sys
import base64
import shutil
import urllib
import logging
import tempfile
import mimetypes
import unicodedata
from odoo.tools.mimetypes import guess_mimetype
@ -61,7 +64,8 @@ def unique_name(name, names, escape_suffix=False):
return name
def unique_files(files):
ufiles = unames = []
ufiles = []
unames = []
for file in files:
uname = unique_name(file[0], unames, escape_suffix=True)
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