mirror of
https://github.com/odoo/design-themes.git
synced 2025-10-07 01:18:52 +07:00
ca449f01f8
The callstack is:
- _pre_dispatch() (http_routing)
- super()
- _frontend_pre_dispatch()
- super()
- _frontend_pre_dispatch() (website) -> Set the website on request
But in `test_themes` we were forcing the website in a `_pre_dispatch()`
override, after calling `super()`.
It means that the call to `_frontend_pre_dispatch()` was actually done
without having yet forced the website in session. get_current_website()
would then not consider the `fw` param as not yet in session, and the
request.website would be set to 1, the default one.
Later in the business code, there would be a mismatch between
`request.website` and `get_current_website()`.
closes odoo/design-themes#582
Related: odoo/odoo#98200
Related: odoo/enterprise#30691
Related: odoo/upgrade#3808
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
19 lines
639 B
Python
19 lines
639 B
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import models, tools
|
|
from odoo.http import request
|
|
|
|
|
|
class Http(models.AbstractModel):
|
|
_inherit = 'ir.http'
|
|
|
|
@classmethod
|
|
def _pre_dispatch(cls, rule, args):
|
|
# Allow public user to use `fw` query string in test mode to ease tests
|
|
force_website_id = request.httprequest.args.get('fw')
|
|
if (request.registry.in_test_mode() or tools.config.options['test_enable']) and force_website_id:
|
|
request.env['website']._force_website(force_website_id)
|
|
|
|
super()._pre_dispatch(rule, args)
|