diff options
Diffstat (limited to 'odoo/addons/base/models')
| -rw-r--r-- | odoo/addons/base/models/assetsbundle.py | 16 | ||||
| -rw-r--r-- | odoo/addons/base/models/ir_http.py | 6 | ||||
| -rw-r--r-- | odoo/addons/base/models/res_users.py | 16 |
3 files changed, 26 insertions, 12 deletions
diff --git a/odoo/addons/base/models/assetsbundle.py b/odoo/addons/base/models/assetsbundle.py index 2cec27197e9..a2d56e4fa02 100644 --- a/odoo/addons/base/models/assetsbundle.py +++ b/odoo/addons/base/models/assetsbundle.py @@ -214,7 +214,8 @@ class AssetsBundle(object): """ ira = self.env['ir.attachment'] domain = [ - ('url', '=like', '/web/content/%-%/{0}{1}%.{2}'.format( # The wilcards are id, version and pagination number (if any) + ('url', '=like', '/web/content/%-%-{}/{}{}%.{}'.format( # The wilcards are id, version and pagination number (if any) + self.env.context.get('website_id'), ('rtl/' if type == 'css' and self.user_direction == 'rtl' else ''), self.name, type)), @@ -235,8 +236,9 @@ class AssetsBundle(object): by file name and only return the one with the max id for each group. """ version = "%" if ignore_version else self.version - url_pattern = '/web/content/%-{0}/{1}{2}{3}.{4}'.format( + url_pattern = '/web/content/%-{}-{}/{}{}{}.{}'.format( version, + self.env.context.get('website_id'), ('rtl/' if type == 'css' and self.user_direction == 'rtl' else ''), self.name, '.%' if type == 'css' else '', @@ -270,7 +272,7 @@ class AssetsBundle(object): values = { 'name': "/web/content/%s" % type, 'datas_fname': fname, - 'mimetype' : mimetype, + 'mimetype': mimetype, 'res_model': 'ir.ui.view', 'res_id': False, 'type': 'binary', @@ -279,7 +281,13 @@ class AssetsBundle(object): } attachment = ira.sudo().create(values) - url = '/web/content/%s-%s%s/%s' % (attachment.id, self.version, ('/rtl' if type == 'css' and self.user_direction == 'rtl' else ''), fname) + url = '/web/content/%s-%s-%s%s/%s' % ( + attachment.id, + self.version, + self.env.context.get('website_id'), + ('/rtl' if type == 'css' and self.user_direction == 'rtl' else ''), + fname + ) values = { 'name': url, 'url': url, diff --git a/odoo/addons/base/models/ir_http.py b/odoo/addons/base/models/ir_http.py index cfc4967e9b4..bad11dd241c 100644 --- a/odoo/addons/base/models/ir_http.py +++ b/odoo/addons/base/models/ir_http.py @@ -244,6 +244,10 @@ class IrHttp(models.AbstractModel): return content_disposition(filename) @classmethod + def _xmlid_to_obj(cls, env, xmlid): + return env.ref(xmlid, False) + + @classmethod def binary_content(cls, xmlid=None, model='ir.attachment', id=None, field='datas', unique=False, filename=None, filename_field='datas_fname', download=False, mimetype=None, default_mimetype='application/octet-stream', @@ -277,7 +281,7 @@ class IrHttp(models.AbstractModel): # get object and content obj = None if xmlid: - obj = env.ref(xmlid, False) + obj = cls._xmlid_to_obj(env, xmlid) elif id and model == 'ir.attachment' and access_token: obj = env[model].sudo().browse(int(id)) if not consteq(obj.access_token, access_token): diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index e00738323a5..dcd8921ee21 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -545,6 +545,10 @@ class Users(models.Model): # extra records will be deleted by the periodical garbage collection self.env['res.users.log'].create({}) # populated by defaults + @api.model + def _get_login_domain(self, login): + return [('login', '=', login)] + @classmethod def _login(cls, db, login, password): if not password: @@ -554,13 +558,11 @@ class Users(models.Model): with cls.pool.cursor() as cr: self = api.Environment(cr, SUPERUSER_ID, {})[cls._name] with self._assert_can_auth(): - user = self.search([('login', '=', login)]) - if not user: - raise AccessDenied() - - user = user.sudo(user.id) - user._check_credentials(password) - user._update_last_login() + user = self.search(self._get_login_domain(login)) + if user: + user = user.sudo(user.id) + user._check_credentials(password) + user._update_last_login() except AccessDenied: _logger.info("Login failed for db:%s login:%s from %s", db, login, ip) raise |
