summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaphael Collet <rco@openerp.com>2017-01-19 16:17:10 +0100
committerRaphael Collet <rco@openerp.com>2017-01-20 10:05:10 +0100
commit4a18d5744e0a36cb2f120bfad00b52ad22f4d01d (patch)
treef797b3632baaf656f3f1816db98c8cb111ca5d30
parent5b521136d4f1682dfa77c5bcb8c1ad899024a9a7 (diff)
[FIX] base: restrict read access to `ir.model` and `ir.model.fields` to employees
-rw-r--r--addons/mail/models/mail_activity.py2
-rw-r--r--addons/website_form/controllers/main.py2
-rw-r--r--odoo/addons/base/ir/ir_translation.py4
-rw-r--r--odoo/addons/base/res/ir_property.py2
-rw-r--r--odoo/addons/base/security/ir.model.access.csv4
-rw-r--r--odoo/report/custom.py8
6 files changed, 11 insertions, 11 deletions
diff --git a/addons/mail/models/mail_activity.py b/addons/mail/models/mail_activity.py
index 661f3fa849d..b39416b41ac 100644
--- a/addons/mail/models/mail_activity.py
+++ b/addons/mail/models/mail_activity.py
@@ -44,7 +44,7 @@ class MailActivity(models.Model):
def default_get(self, fields):
res = super(MailActivity, self).default_get(fields)
if not fields or 'res_model_id' in fields and res.get('res_model'):
- res['res_model_id'] = self.env['ir.model'].sudo().search([('model', '=', res['res_model'])]).id
+ res['res_model_id'] = self.env['ir.model']._get(res['res_model']).id
return res
# owner
diff --git a/addons/website_form/controllers/main.py b/addons/website_form/controllers/main.py
index 742a8eeb0b7..2f5f7ec2292 100644
--- a/addons/website_form/controllers/main.py
+++ b/addons/website_form/controllers/main.py
@@ -21,7 +21,7 @@ class WebsiteForm(http.Controller):
# Check and insert values from the form on the model <model>
@http.route('/website_form/<string:model_name>', type='http', auth="public", methods=['POST'], website=True)
def website_form(self, model_name, **kwargs):
- model_record = request.env['ir.model'].search([('model', '=', model_name), ('website_form_access', '=', True)])
+ model_record = request.env['ir.model'].sudo().search([('model', '=', model_name), ('website_form_access', '=', True)])
if not model_record:
return json.dumps(False)
diff --git a/odoo/addons/base/ir/ir_translation.py b/odoo/addons/base/ir/ir_translation.py
index 46f3dbba1a0..5c63e3c7244 100644
--- a/odoo/addons/base/ir/ir_translation.py
+++ b/odoo/addons/base/ir/ir_translation.py
@@ -501,7 +501,7 @@ class IrTranslation(models.Model):
:param model_name: the name of a model
:return: the model's fields' strings as a dictionary `{field_name: field_string}`
"""
- fields = self.env['ir.model.fields'].search([('model', '=', model_name)])
+ fields = self.env['ir.model.fields'].sudo().search([('model', '=', model_name)])
return {field.name: field.field_description for field in fields}
@api.model
@@ -513,7 +513,7 @@ class IrTranslation(models.Model):
:param model_name: the name of a model
:return: the model's fields' help as a dictionary `{field_name: field_help}`
"""
- fields = self.env['ir.model.fields'].search([('model', '=', model_name)])
+ fields = self.env['ir.model.fields'].sudo().search([('model', '=', model_name)])
return {field.name: field.help for field in fields}
@api.multi
diff --git a/odoo/addons/base/res/ir_property.py b/odoo/addons/base/res/ir_property.py
index de3f4d9d214..82db6eba933 100644
--- a/odoo/addons/base/res/ir_property.py
+++ b/odoo/addons/base/res/ir_property.py
@@ -79,7 +79,7 @@ class Property(models.Model):
else:
field_id = self.env['ir.model.fields'].browse(field_id)
- value = '%s,%d' % (field_id.relation, value)
+ value = '%s,%d' % (field_id.sudo().relation, value)
values[field] = value
return values
diff --git a/odoo/addons/base/security/ir.model.access.csv b/odoo/addons/base/security/ir.model.access.csv
index 389c8ac2c1a..57fb62af90c 100644
--- a/odoo/addons/base/security/ir.model.access.csv
+++ b/odoo/addons/base/security/ir.model.access.csv
@@ -10,9 +10,9 @@
"access_ir_model_access_group_erp_manager","ir_model_access_group_erp_manager","model_ir_model_access","group_erp_manager",1,1,1,1
"access_ir_model_data_group_erp_manager","ir_model_data group_erp_manager","model_ir_model_data","group_erp_manager",1,1,1,1
"access_ir_model_fields_group_erp_manager","ir_model_fields group_erp_manager","model_ir_model_fields","group_erp_manager",1,1,1,1
-"access_ir_model_all","ir_model_all","model_ir_model",,1,0,0,0
+"access_ir_model_user","ir_model_all","model_ir_model",base.group_user,1,0,0,0
"access_ir_model_data_user","ir_model_data user","model_ir_model_data",base.group_user,1,0,1,0
-"access_ir_model_fields_all","ir_model_fields all","model_ir_model_fields",,1,0,0,0
+"access_ir_model_fields_user","ir_model_fields all","model_ir_model_fields",base.group_user,1,0,0,0
"access_ir_module_category_group_user","ir_module_category group_user","model_ir_module_category","group_erp_manager",1,0,0,0
"access_ir_module_module_group_user","ir_module_module group_user","model_ir_module_module","group_system",1,1,1,1
"access_ir_module_module_dependency_group_system","ir_module_module_dependency group_system","model_ir_module_module_dependency","group_system",1,1,1,1
diff --git a/odoo/report/custom.py b/odoo/report/custom.py
index be4b95f9389..1eb68f0890f 100644
--- a/odoo/report/custom.py
+++ b/odoo/report/custom.py
@@ -118,7 +118,7 @@ class report_custom(report_int):
report = report.read()[0]
fields = env['ir.report.custom.fields'].browse(report['fields_child0']).read()
fields.sort(key=lambda x: x['sequence'])
- model_name = env['ir.model'].browse(report['model_id'][0]).model
+ model_name = env['ir.model'].sudo().browse(report['model_id'][0]).model
fct = {
'id': lambda x: x,
@@ -134,7 +134,7 @@ class report_custom(report_int):
field_child = f['field_child'+str(i)]
if field_child:
row.append(
- env['ir.model.fields'].browse(field_child[0]).name
+ env['ir.model.fields'].sudo().browse(field_child[0]).name
)
if f['fc'+str(i)+'_operande']:
fct_name = 'id'
@@ -342,7 +342,7 @@ class report_custom(report_int):
for f in fields:
field_id = (f['field_child3'] and f['field_child3'][0]) or (f['field_child2'] and f['field_child2'][0]) or (f['field_child1'] and f['field_child1'][0]) or (f['field_child0'] and f['field_child0'][0])
if field_id:
- ttype = env['ir.model.fields'].browse(field_id).ttype
+ ttype = env['ir.model.fields'].sudo().browse(field_id).ttype
if ttype == 'date':
date_idx = idx
fct[idx] = process_date[report['frequency']]
@@ -435,7 +435,7 @@ class report_custom(report_int):
for f in fields:
field_id = (f['field_child3'] and f['field_child3'][0]) or (f['field_child2'] and f['field_child2'][0]) or (f['field_child1'] and f['field_child1'][0]) or (f['field_child0'] and f['field_child0'][0])
if field_id:
- ttype = env['ir.model.fields'].browse(field_id).ttype
+ ttype = env['ir.model.fields'].sudo().browse(field_id).ttype
if ttype == 'date':
date_idx = idx
fct[idx] = process_date[report['frequency']]