[IMP] base: remove read on ir.default
And make get private Part-of: odoo/odoo#118701
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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]
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
|
||||
@@ -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.
|
||||
"""
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
@@ -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',
|
||||
)
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user