From dc99d15fdc02062653a4fda22c7e65510992565a Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Fri, 29 Oct 2021 07:40:42 +0000 Subject: [PATCH] [FIX] web,base: make code more defensive, cleanup Following-up to previous commit, this one makes the `get_translations_for_webclient()` more defensive with regards to the absence of a `lang` key in the context, rather than relying on callers to protect it. The rest of the logic was already fine with this. This allows simplification of the `session_info` logic and removal of the conditional for `translation_hash`. Further cleanups in `session_info()`: - removed a duplicate calls to `session.get_context()` - removed duplicated resolutions of `request.session.uid` closes odoo/odoo#79182 X-original-commit: 3eca1a2e58b8c644c0701d33d0c9d0330bdc234f Signed-off-by: Olivier Dony (odo) Signed-off-by: Romeo Fragomeli (rfr) --- addons/web/models/ir_http.py | 17 +++++++++-------- odoo/addons/base/models/ir_translation.py | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/addons/web/models/ir_http.py b/addons/web/models/ir_http.py index bf764741aea..8a6acd7e1ee 100644 --- a/addons/web/models/ir_http.py +++ b/addons/web/models/ir_http.py @@ -26,7 +26,8 @@ class Http(models.AbstractModel): user = request.env.user version_info = odoo.service.common.exp_version() - user_context = request.session.get_context() if request.session.uid else {} + session_uid = request.session.uid + user_context = request.session.get_context() if session_uid else {} IrConfigSudo = self.env['ir.config_parameter'].sudo() max_file_upload_size = int(IrConfigSudo.get_param( 'web.max_file_upload_size', @@ -34,12 +35,12 @@ class Http(models.AbstractModel): )) mods = odoo.conf.server_wide_modules or [] lang = user_context.get("lang") - translation_hash = request.env['ir.translation'].sudo().get_web_translations_hash(mods, lang) if request.session.uid else None + translation_hash = request.env['ir.translation'].sudo().get_web_translations_hash(mods, lang) session_info = { - "uid": request.session.uid, - "is_system": user._is_system() if request.session.uid else False, - "is_admin": user._is_admin() if request.session.uid else False, - "user_context": request.session.get_context() if request.session.uid else {}, + "uid": session_uid, + "is_system": user._is_system() if session_uid else False, + "is_admin": user._is_admin() if session_uid else False, + "user_context": user_context, "db": request.session.db, "server_version": version_info.get('server_version'), "server_version_info": version_info.get('server_version_info'), @@ -47,8 +48,8 @@ class Http(models.AbstractModel): "name": user.name, "username": user.login, "partner_display_name": user.partner_id.display_name, - "company_id": user.company_id.id if request.session.uid else None, # YTI TODO: Remove this from the user context - "partner_id": user.partner_id.id if request.session.uid and user.partner_id else None, + "company_id": user.company_id.id if session_uid else None, # YTI TODO: Remove this from the user context + "partner_id": user.partner_id.id if session_uid and user.partner_id else None, "web.base.url": IrConfigSudo.get_param('web.base.url', default=''), "active_ids_limit": int(IrConfigSudo.get_param('web.active_ids_limit', default='20000')), 'profile_session': request.session.profile_session, diff --git a/odoo/addons/base/models/ir_translation.py b/odoo/addons/base/models/ir_translation.py index 95e83a08677..f54c48e71f0 100644 --- a/odoo/addons/base/models/ir_translation.py +++ b/odoo/addons/base/models/ir_translation.py @@ -861,7 +861,7 @@ class IrTranslation(models.Model): mods = [x['name'] for x in self.env['ir.module.module'].sudo().search_read( [('state', '=', 'installed')], ['name'])] if not lang: - lang = self._context["lang"] + lang = self._context.get("lang") langs = self.env['res.lang']._lang_get(lang) lang_params = None if langs: