summaryrefslogtreecommitdiff
path: root/odoo/addons/base
diff options
context:
space:
mode:
Diffstat (limited to 'odoo/addons/base')
-rw-r--r--odoo/addons/base/data/ir_module_category_data.xml2
-rw-r--r--odoo/addons/base/models/assetsbundle.py16
-rw-r--r--odoo/addons/base/models/ir_http.py6
-rw-r--r--odoo/addons/base/models/res_users.py16
4 files changed, 27 insertions, 13 deletions
diff --git a/odoo/addons/base/data/ir_module_category_data.xml b/odoo/addons/base/data/ir_module_category_data.xml
index 64ae170d68a..53fe9a4ba27 100644
--- a/odoo/addons/base/data/ir_module_category_data.xml
+++ b/odoo/addons/base/data/ir_module_category_data.xml
@@ -170,7 +170,7 @@
<record model="ir.module.category" id="module_category_theme">
<field name="name">Theme</field>
- <field name="exclusive" eval="1"/>
+ <field name="exclusive" eval="0"/>
<field name="sequence">50</field>
</record>
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