diff --git a/addons/http_routing/models/ir_http.py b/addons/http_routing/models/ir_http.py index a4d95e48274..46e89529d54 100644 --- a/addons/http_routing/models/ir_http.py +++ b/addons/http_routing/models/ir_http.py @@ -284,7 +284,7 @@ class IrHttp(models.AbstractModel): @classmethod def _get_default_lang(cls): - lang_code = request.env['ir.default'].sudo().get('res.partner', 'lang') + lang_code = request.env['ir.default'].sudo()._get('res.partner', 'lang') if lang_code: return request.env['res.lang']._lang_get(lang_code) return request.env['res.lang'].search([], limit=1) diff --git a/addons/sale_stock/models/sale_order.py b/addons/sale_stock/models/sale_order.py index 7c1c3405abd..ffde3a810b3 100644 --- a/addons/sale_stock/models/sale_order.py +++ b/addons/sale_stock/models/sale_order.py @@ -161,7 +161,7 @@ class SaleOrder(models.Model): def _compute_warehouse_id(self): for order in self: default_warehouse_id = self.env['ir.default'].with_company( - order.company_id.id).get_model_defaults('sale.order').get('warehouse_id') + order.company_id.id)._get_model_defaults('sale.order').get('warehouse_id') if order.state in ['draft', 'sent'] or not order.ids: # Should expect empty if default_warehouse_id is not None: diff --git a/addons/website/models/website.py b/addons/website/models/website.py index c9f88a650a3..b73abcd19c3 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -59,7 +59,7 @@ class Website(models.Model): return self.env['res.lang'].search([]).ids def _default_language(self): - lang_code = self.env['ir.default'].get('res.partner', 'lang') + lang_code = self.env['ir.default']._get('res.partner', 'lang') def_lang_id = self.env['res.lang']._lang_get_id(lang_code) return def_lang_id or self._active_languages()[0] diff --git a/addons/website_sale_stock/models/res_config_settings.py b/addons/website_sale_stock/models/res_config_settings.py index ceabc7b5282..0b535ae9924 100644 --- a/addons/website_sale_stock/models/res_config_settings.py +++ b/addons/website_sale_stock/models/res_config_settings.py @@ -33,11 +33,11 @@ class ResConfigSettings(models.TransientModel): @api.model def get_values(self): res = super(ResConfigSettings, self).get_values() - IrDefault = self.env['ir.default'].sudo() - allow_out_of_stock_order = IrDefault.get('product.template', 'allow_out_of_stock_order') + IrDefaultGet = self.env['ir.default'].sudo()._get + allow_out_of_stock_order = IrDefaultGet('product.template', 'allow_out_of_stock_order') res.update( allow_out_of_stock_order=allow_out_of_stock_order if allow_out_of_stock_order is not None else True, - available_threshold=IrDefault.get('product.template', 'available_threshold') or 5.0, - show_availability=IrDefault.get('product.template', 'show_availability') or False) + available_threshold=IrDefaultGet('product.template', 'available_threshold') or 5.0, + show_availability=IrDefaultGet('product.template', 'show_availability') or False) return res diff --git a/addons/website_sale_stock/models/website.py b/addons/website_sale_stock/models/website.py index f3dde6b1fda..b1cc4d1bdbc 100644 --- a/addons/website_sale_stock/models/website.py +++ b/addons/website_sale_stock/models/website.py @@ -18,8 +18,8 @@ class Website(models.Model): def _get_warehouse_available(self): return ( self.warehouse_id.id or - self.env['ir.default'].get('sale.order', 'warehouse_id', company_id=self.company_id.id) or - self.env['ir.default'].get('sale.order', 'warehouse_id') or + self.env['ir.default'].sudo()._get('sale.order', 'warehouse_id', company_id=self.company_id.id) or + self.env['ir.default'].sudo()._get('sale.order', 'warehouse_id') or self.env['stock.warehouse'].sudo().search([('company_id', '=', self.company_id.id)], limit=1).id ) diff --git a/odoo/addons/base/models/ir_default.py b/odoo/addons/base/models/ir_default.py index bcf668012fb..1026f846382 100644 --- a/odoo/addons/base/models/ir_default.py +++ b/odoo/addons/base/models/ir_default.py @@ -94,7 +94,7 @@ class IrDefault(models.Model): return True @api.model - def get(self, model_name, field_name, user_id=False, company_id=False, condition=False): + def _get(self, model_name, field_name, user_id=False, company_id=False, condition=False): """ Return the default value for the given field, user and company, or ``None`` if no default is available. @@ -128,7 +128,7 @@ class IrDefault(models.Model): # Note about ormcache invalidation: it is not needed when deleting a field, # a user, or a company, as the corresponding defaults will no longer be # requested. It must only be done when a user's company is modified. - def get_model_defaults(self, model_name, condition=False): + def _get_model_defaults(self, model_name, condition=False): """ Return the available default values for the given model (for the current user), as a dict mapping field names to values. """ diff --git a/odoo/addons/base/models/res_config.py b/odoo/addons/base/models/res_config.py index 48c26087f2d..d85407d3ed7 100644 --- a/odoo/addons/base/models/res_config.py +++ b/odoo/addons/base/models/res_config.py @@ -476,7 +476,7 @@ class ResConfigSettings(models.TransientModel, ResConfigModuleInstallationMixin) # defaults: take the corresponding default value they set for name, model, field in classified['default']: - value = IrDefault.get(model, field) + value = IrDefault._get(model, field) if value is not None: res[name] = value diff --git a/odoo/addons/base/models/res_lang.py b/odoo/addons/base/models/res_lang.py index 86b2ed9e308..48a974735e2 100644 --- a/odoo/addons/base/models/res_lang.py +++ b/odoo/addons/base/models/res_lang.py @@ -199,7 +199,7 @@ class Lang(models.Model): lang_code = (tools.config.get('load_language') or 'en_US').split(',')[0] lang = self._activate_lang(lang_code) or self._create_lang(lang_code) IrDefault = self.env['ir.default'] - default_value = IrDefault.get('res.partner', 'lang') + default_value = IrDefault._get('res.partner', 'lang') if default_value is None: IrDefault.set('res.partner', 'lang', lang_code) # set language of main company, created directly by db bootstrap SQL diff --git a/odoo/addons/base/security/ir.model.access.csv b/odoo/addons/base/security/ir.model.access.csv index 83006e29d53..301273608aa 100644 --- a/odoo/addons/base/security/ir.model.access.csv +++ b/odoo/addons/base/security/ir.model.access.csv @@ -34,7 +34,7 @@ "access_ir_ui_view_group_system","ir_ui_view group_system","model_ir_ui_view","group_system",1,1,1,1 "access_reset_view_arch_wizard_group_system","reset_view_arch_wizard group_system","model_reset_view_arch_wizard","group_system",1,1,1,0 "access_ir_ui_view_custom_group_user","ir_ui_view_custom_group_user","model_ir_ui_view_custom",,1,1,1,1 -"access_ir_default_all","ir_default all","model_ir_default",,1,0,0,0 +"access_ir_default_all","ir_default all","model_ir_default",,0,0,0,0 "access_ir_default_group_user","ir_default group_user","model_ir_default","group_user",1,1,1,1 "access_ir_default_group_system","ir_default group_system","model_ir_default","group_system",1,1,1,1 "access_res_company_group_erp_manager","res_company group_erp_manager","model_res_company","group_erp_manager",1,1,1,1 diff --git a/odoo/addons/base/tests/test_ir_default.py b/odoo/addons/base/tests/test_ir_default.py index 37c61951918..4981a03d9a9 100644 --- a/odoo/addons/base/tests/test_ir_default.py +++ b/odoo/addons/base/tests/test_ir_default.py @@ -25,29 +25,29 @@ class TestIrDefault(TransactionCase): # set a default value for all users IrDefault1.search([('field_id.model', '=', 'res.partner')]).unlink() IrDefault1.set('res.partner', 'ref', 'GLOBAL', user_id=False, company_id=False) - self.assertEqual(IrDefault1.get_model_defaults('res.partner'), {'ref': 'GLOBAL'}, + self.assertEqual(IrDefault1._get_model_defaults('res.partner'), {'ref': 'GLOBAL'}, "Can't retrieve the created default value for all users.") - self.assertEqual(IrDefault2.get_model_defaults('res.partner'), {'ref': 'GLOBAL'}, + self.assertEqual(IrDefault2._get_model_defaults('res.partner'), {'ref': 'GLOBAL'}, "Can't retrieve the created default value for all users.") - self.assertEqual(IrDefault3.get_model_defaults('res.partner'), {'ref': 'GLOBAL'}, + self.assertEqual(IrDefault3._get_model_defaults('res.partner'), {'ref': 'GLOBAL'}, "Can't retrieve the created default value for all users.") # set a default value for current company (behavior of 'set default' from debug mode) IrDefault1.set('res.partner', 'ref', 'COMPANY', user_id=False, company_id=True) - self.assertEqual(IrDefault1.get_model_defaults('res.partner'), {'ref': 'COMPANY'}, + self.assertEqual(IrDefault1._get_model_defaults('res.partner'), {'ref': 'COMPANY'}, "Can't retrieve the created default value for company.") - self.assertEqual(IrDefault2.get_model_defaults('res.partner'), {'ref': 'COMPANY'}, + self.assertEqual(IrDefault2._get_model_defaults('res.partner'), {'ref': 'COMPANY'}, "Can't retrieve the created default value for company.") - self.assertEqual(IrDefault3.get_model_defaults('res.partner'), {'ref': 'GLOBAL'}, + self.assertEqual(IrDefault3._get_model_defaults('res.partner'), {'ref': 'GLOBAL'}, "Unexpected default value for company.") # set a default value for current user (behavior of 'set default' from debug mode) IrDefault2.set('res.partner', 'ref', 'USER', user_id=True, company_id=True) - self.assertEqual(IrDefault1.get_model_defaults('res.partner'), {'ref': 'COMPANY'}, + self.assertEqual(IrDefault1._get_model_defaults('res.partner'), {'ref': 'COMPANY'}, "Can't retrieve the created default value for user.") - self.assertEqual(IrDefault2.get_model_defaults('res.partner'), {'ref': 'USER'}, + self.assertEqual(IrDefault2._get_model_defaults('res.partner'), {'ref': 'USER'}, "Unexpected default value for user.") - self.assertEqual(IrDefault3.get_model_defaults('res.partner'), {'ref': 'GLOBAL'}, + self.assertEqual(IrDefault3._get_model_defaults('res.partner'), {'ref': 'GLOBAL'}, "Unexpected default value for company.") # check default values on partners @@ -65,20 +65,20 @@ class TestIrDefault(TransactionCase): # default without condition IrDefault.search([('field_id.model', '=', 'res.partner')]).unlink() IrDefault.set('res.partner', 'ref', 'X') - self.assertEqual(IrDefault.get_model_defaults('res.partner'), + self.assertEqual(IrDefault._get_model_defaults('res.partner'), {'ref': 'X'}) - self.assertEqual(IrDefault.get_model_defaults('res.partner', condition='name=Agrolait'), + self.assertEqual(IrDefault._get_model_defaults('res.partner', condition='name=Agrolait'), {}) # default with a condition IrDefault.search([('field_id.model', '=', 'res.partner.title')]).unlink() IrDefault.set('res.partner.title', 'shortcut', 'X') IrDefault.set('res.partner.title', 'shortcut', 'Mr', condition='name=Mister') - self.assertEqual(IrDefault.get_model_defaults('res.partner.title'), + self.assertEqual(IrDefault._get_model_defaults('res.partner.title'), {'shortcut': 'X'}) - self.assertEqual(IrDefault.get_model_defaults('res.partner.title', condition='name=Miss'), + self.assertEqual(IrDefault._get_model_defaults('res.partner.title', condition='name=Miss'), {}) - self.assertEqual(IrDefault.get_model_defaults('res.partner.title', condition='name=Mister'), + self.assertEqual(IrDefault._get_model_defaults('res.partner.title', condition='name=Mister'), {'shortcut': 'Mr'}) def test_invalid(self): @@ -101,11 +101,11 @@ class TestIrDefault(TransactionCase): # set a record as a default value title = self.env['res.partner.title'].create({'name': 'President'}) IrDefault.set('res.partner', 'title', title.id) - self.assertEqual(IrDefault.get_model_defaults('res.partner'), {'title': title.id}) + self.assertEqual(IrDefault._get_model_defaults('res.partner'), {'title': title.id}) # delete the record, and check the presence of the default value title.unlink() - self.assertEqual(IrDefault.get_model_defaults('res.partner'), {}) + self.assertEqual(IrDefault._get_model_defaults('res.partner'), {}) def test_multi_company_defaults(self): """Check defaults in multi-company environment.""" @@ -124,22 +124,22 @@ class TestIrDefault(TransactionCase): IrDefault.with_context(allowed_company_ids=company_b.ids).set( 'res.partner', 'ref', 'CBDefault', user_id=True, company_id=True) self.assertEqual( - IrDefault.get_model_defaults('res.partner')['ref'], + IrDefault._get_model_defaults('res.partner')['ref'], 'CADefault', ) self.assertEqual( - IrDefault.with_context(allowed_company_ids=company_a.ids).get_model_defaults('res.partner')['ref'], + IrDefault.with_context(allowed_company_ids=company_a.ids)._get_model_defaults('res.partner')['ref'], 'CADefault', ) self.assertEqual( - IrDefault.with_context(allowed_company_ids=company_b.ids).get_model_defaults('res.partner')['ref'], + IrDefault.with_context(allowed_company_ids=company_b.ids)._get_model_defaults('res.partner')['ref'], 'CBDefault', ) self.assertEqual( - IrDefault.with_context(allowed_company_ids=company_a_b.ids).get_model_defaults('res.partner')['ref'], + IrDefault.with_context(allowed_company_ids=company_a_b.ids)._get_model_defaults('res.partner')['ref'], 'CADefault', ) self.assertEqual( - IrDefault.with_context(allowed_company_ids=company_b_a.ids).get_model_defaults('res.partner')['ref'], + IrDefault.with_context(allowed_company_ids=company_b_a.ids)._get_model_defaults('res.partner')['ref'], 'CBDefault', ) diff --git a/odoo/models.py b/odoo/models.py index 9f983a177ec..2505be3806f 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -872,7 +872,7 @@ class BaseModel(metaclass=MetaModel): def onchange_default(field, self): value = field.convert_to_write(self[field.name], self) condition = "%s=%s" % (field.name, value) - defaults = self.env['ir.default'].get_model_defaults(self._name, condition) + defaults = self.env['ir.default']._get_model_defaults(self._name, condition) self.update(defaults) for name, field in cls._fields.items(): @@ -1430,7 +1430,7 @@ class BaseModel(metaclass=MetaModel): """ defaults = {} parent_fields = defaultdict(list) - ir_defaults = self.env['ir.default'].get_model_defaults(self._name) + ir_defaults = self.env['ir.default']._get_model_defaults(self._name) for name in fields_list: # 1. look up context