[IMP] http: avoid cycle on request
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user