trytond/fix_werkzeug_2.x.patch

55 lines
2.0 KiB
Diff

diff -U 3 -dHrN -- a/trytond/protocols/wrappers.py b/trytond/protocols/wrappers.py
--- a/trytond/protocols/wrappers.py 2019-08-11 19:34:43.000000000 +0200
+++ b/trytond/protocols/wrappers.py 2021-07-27 15:59:38.213817153 +0200
@@ -8,7 +8,6 @@
from werkzeug.wrappers import Request as _Request, Response
from werkzeug.utils import cached_property
-from werkzeug.http import wsgi_to_bytes, bytes_to_wsgi
from werkzeug.datastructures import Authorization
from werkzeug.exceptions import abort, HTTPException
@@ -84,7 +83,8 @@
def parse_authorization_header(value):
if not value:
return
- value = wsgi_to_bytes(value)
+ if not isinstance(value, bytes):
+ value = value.encode('latin1')
try:
auth_type, auth_info = value.split(None, 1)
auth_type = auth_type.lower()
@@ -98,9 +98,9 @@
except Exception:
return
return Authorization('session', {
- 'username': bytes_to_wsgi(username),
+ 'username': username.decode("latin1"),
'userid': userid,
- 'session': bytes_to_wsgi(session),
+ 'session': session.decode("latin1"),
})
@@ -171,16 +171,17 @@
pool = Pool()
UserApplication = pool.get('res.user.application')
- authorization = wsgi_to_bytes(request.headers['Authorization'])
+ authorization = request.headers['Authorization']
try:
auth_type, auth_info = authorization.split(None, 1)
auth_type = auth_type.lower()
except ValueError:
abort(401)
- if auth_type != b'bearer':
+ if auth_type != 'bearer':
abort(403)
- application = UserApplication.check(bytes_to_wsgi(auth_info), name)
+ application = UserApplication.check(auth_info, name)
+
if not application:
abort(403)
transaction = Transaction()