details: https://code.tryton.org/tryton/commit/928f7b95d4a4
branch: default
user: Cédric Krier <[email protected]>
date: Thu Aug 27 13:08:43 2026 +0200
description:
Support explicit request context in URLAccessor
diffstat:
trytond/CHANGELOG | 1 +
trytond/trytond/url.py | 57 +++++++++++++++++++++++++++----------------------
2 files changed, 32 insertions(+), 26 deletions(-)
diffs (97 lines):
diff -r e56f603ce8a8 -r 928f7b95d4a4 trytond/CHANGELOG
--- a/trytond/CHANGELOG Sat Jun 06 16:16:47 2026 +0200
+++ b/trytond/CHANGELOG Thu Aug 27 13:08:43 2026 +0200
@@ -1,3 +1,4 @@
+* Add explicit request context in URLAccessor
* Retry unfinished queued tasks
* Add a timer to prevent requests from lasting longer than their timeout
* Apply mixin to Database and TableHandler from configuration
diff -r e56f603ce8a8 -r 928f7b95d4a4 trytond/trytond/url.py
--- a/trytond/trytond/url.py Sat Jun 06 16:16:47 2026 +0200
+++ b/trytond/trytond/url.py Thu Aug 27 13:08:43 2026 +0200
@@ -24,54 +24,59 @@
self._protocol = protocol
@classmethod
- def is_secure(cls):
- context = Transaction().context
- if context:
- request = context.get('_request')
- if request and request['is_secure']:
- return True
+ def is_secure(cls, request=None):
+ if request is None:
+ context = Transaction().context
+ if context:
+ request = context.get('_request')
+ if request and request['is_secure']:
+ return True
return bool(
config.get('ssl', 'certificate')
or config.get('ssl', 'privatekey'))
@classmethod
- def host(cls):
- context = Transaction().context
- if context:
- request = context.get('_request')
- if request:
- return request['http_host']
+ def host(cls, request=None):
+ if request is None:
+ context = Transaction().context
+ if context:
+ request = context.get('_request')
+ if request:
+ return request['http_host']
return HOSTNAME
@classmethod
- def http_host(cls):
+ def http_host(cls, request=None):
return urllib.parse.urlunsplit((
'http' + ('s' if cls.is_secure() else ''),
- cls.host(), '', '', ''))
+ cls.host(request=request), '', '', ''))
@classmethod
- def http_root_path(cls):
- context = Transaction().context
- if context:
- request = context.get('_request')
- if request:
- return request['root_path']
+ def http_root_path(cls, request=None):
+ if request is None:
+ context = Transaction().context
+ if context:
+ request = context.get('_request')
+ if request:
+ return request['root_path']
return ROOT_PATH
@classmethod
- def http_base(cls):
- return urllib.parse.urljoin(cls.http_host(), cls.http_root_path())
+ def http_base(cls, request=None):
+ return urllib.parse.urljoin(
+ cls.http_host(request=request),
+ cls.http_root_path(request=request))
@property
- def protocol(self):
+ def protocol(self, request=None):
if self._protocol == 'http':
- return 'http' + ('s' if self.is_secure() else '')
+ return 'http' + ('s' if self.is_secure(request=request) else '')
return self._protocol
@property
- def root_path(self):
+ def root_path(self, request=None):
if self._protocol == 'http':
- return self.http_root_path()
+ return self.http_root_path(request=request)
return '/'
@property