[IMP] http: avoid cycle on request

This commit is contained in:
Xavier Morel
2021-01-26 09:05:35 +01:00
parent a7e99e261f
commit b51b094c2b
4 changed files with 6 additions and 9 deletions
+2 -3
View File
@@ -16,7 +16,7 @@ except ImportError:
slugify_lib = None
import odoo
from odoo import api, models, registry, exceptions, tools
from odoo import api, models, registry, exceptions, tools, http
from odoo.addons.base.models import ir_http
from odoo.addons.base.models.ir_http import RequestUID
from odoo.addons.base.models.qweb import QWebException
@@ -670,8 +670,7 @@ class IrHttp(models.AbstractModel):
@tools.ormcache('path', 'query_args')
def url_rewrite(self, path, query_args=None):
new_url = False
req = request.httprequest
router = req.app.get_db_router(request.db).bind('')
router = http.root.get_db_router(request.db).bind('')
endpoint = False
try:
endpoint = router.match(path, method='POST', query_args=query_args)
+2 -3
View File
@@ -108,9 +108,8 @@ def serialize_exception(f):
return wrap
def abort_and_redirect(url):
r = request.httprequest
response = request.redirect(url, 302)
response = r.app.get_response(r, response, explicit_session=False)
response = http.root.get_response(request.httprequest, response, explicit_session=False)
werkzeug.exceptions.abort(response)
def ensure_db(redirect='/web/database/selector'):
@@ -1032,7 +1031,7 @@ class Proxy(http.Controller):
from werkzeug.wrappers import BaseResponse
base_url = request.httprequest.base_url
query_string = request.httprequest.query_string
client = Client(request.httprequest.app, BaseResponse)
client = Client(http.root, BaseResponse)
headers = {'X-Openerp-Session-Id': request.session.sid}
return client.post('/' + path, base_url=base_url, query_string=query_string,
headers=headers, data=data)
+2 -2
View File
@@ -1137,7 +1137,7 @@ class Website(models.Model):
:rtype: list({name: str, url: str})
"""
router = request.httprequest.app.get_db_router(request.db)
router = http.root.get_db_router(request.db)
# Force enumeration to be performed as public user
url_set = set()
@@ -1296,7 +1296,7 @@ class Website(models.Model):
"""
self.ensure_one()
if request.endpoint:
router = request.httprequest.app.get_db_router(request.db).bind('')
router = http.root.get_db_router(request.db).bind('')
arguments = dict(request.endpoint_arguments)
for key, val in list(arguments.items()):
if isinstance(val, models.BaseModel):
-1
View File
@@ -1434,7 +1434,6 @@ class Root(object):
"""
try:
httprequest = werkzeug.wrappers.Request(environ)
httprequest.app = self
httprequest.parameter_storage_class = werkzeug.datastructures.ImmutableOrderedMultiDict
current_thread = threading.current_thread()