diff --git a/addons/mail_plugin/tests/common.py b/addons/mail_plugin/tests/common.py index 98e8fcaebf4..400c3e57498 100644 --- a/addons/mail_plugin/tests/common.py +++ b/addons/mail_plugin/tests/common.py @@ -8,6 +8,7 @@ from unittest.mock import patch from odoo.addons.mail.tests.common import mail_new_test_user from odoo.http import request from odoo.tests.common import HttpCase +from odoo import SUPERUSER_ID @contextmanager @@ -19,7 +20,7 @@ def mock_auth_method_outlook(login): :param login: Login of the user used for the authentication """ def patched_auth_method_outlook(*args, **kwargs): - request.update_env(user=request.env['res.users'].search([('login', '=', login)], limit=1)) + request.update_env(user=request.env['res.users'].with_user(SUPERUSER_ID).search([('login', '=', login)], limit=1)) with patch( 'odoo.addons.mail_plugin.models.ir_http.IrHttp' diff --git a/addons/website/models/res_users.py b/addons/website/models/res_users.py index 10ebc1499e8..f6ab17e03fe 100644 --- a/addons/website/models/res_users.py +++ b/addons/website/models/res_users.py @@ -60,7 +60,7 @@ class ResUsers(models.Model): @api.model def _get_signup_invitation_scope(self): - current_website = self.env['website'].get_current_website() + current_website = self.env['website'].sudo().get_current_website() return current_website.auth_signup_uninvited or super(ResUsers, self)._get_signup_invitation_scope() @classmethod diff --git a/addons/website/models/website.py b/addons/website/models/website.py index c0d95a79b58..7f268f7d004 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -975,7 +975,7 @@ class Website(models.Model): # The format of `httprequest.host` is `domain:port` domain_name = request and request.httprequest.host or '' - website_id = self._get_current_website_id(domain_name, fallback=fallback) + website_id = self.sudo()._get_current_website_id(domain_name, fallback=fallback) return self.browse(website_id) @tools.ormcache('domain_name', 'fallback') diff --git a/odoo/addons/base/models/ir_http.py b/odoo/addons/base/models/ir_http.py index d5ab635a5f0..96706f90ab3 100644 --- a/odoo/addons/base/models/ir_http.py +++ b/odoo/addons/base/models/ir_http.py @@ -183,7 +183,8 @@ class IrHttp(models.AbstractModel): # verify the default language set in the context is valid, # otherwise fallback on the company lang, english or the first # lang installed - request.update_context(lang=get_lang(request.env)._get_cached('code')) + env = request.env if request.env.uid else request.env['base'].with_user(SUPERUSER_ID).env + request.update_context(lang=get_lang(env)._get_cached('code')) @classmethod def _dispatch(cls, endpoint): diff --git a/odoo/addons/base/models/ir_qweb.py b/odoo/addons/base/models/ir_qweb.py index 91a179b1c9f..71a17884eec 100644 --- a/odoo/addons/base/models/ir_qweb.py +++ b/odoo/addons/base/models/ir_qweb.py @@ -2425,7 +2425,7 @@ class IrQWeb(models.AbstractModel): If debug=assets, the assets will be regenerated when a file which composes them has been modified. Else, the assets will be generated only once and then stored in cache. """ - rtl = self.env['res.lang']._lang_get_direction(self.env.context.get('lang') or self.env.user.lang) == 'rtl' + rtl = self.env['res.lang'].sudo()._lang_get_direction(self.env.context.get('lang') or self.env.user.lang) == 'rtl' assets_params = self.env['ir.asset']._get_asset_params() # website_id debug_assets = debug and 'assets' in debug