[IMP] base: Introduce generic methods get_default_field and set_fields
Method `get_default_fields` =========================== Currently all the methods beginning by `get_default` are used to fetch their default values, usually by looking in the ir.config_parameter table. As several methods `get_default_fields` have been defined in res_config classes, it better to define it in base and calling to super to avoid side effects like the following example - 2 classes that override the same class and define the same method. In that case one method will never be called, as it is ovewritten by the other. Method `set_fields` =================== Currently all the methods beginning by `set_` are used to set their values, usually in the ir.config_parameter table. As several methods `set_fields` have been defined in res_config classes, it better to define it in base and calling to super to avoid side effects like the following example - 2 classes that override the same class and define the same method. In that case one method will never be called, as it is ovewritten by the other. Methods `get_default_foo` and `set_foo` ======================================= This commit deprecates the method starting with `get_default_` or `set_` in the res.config models. A warning is raised in that case.
This commit is contained in:
@@ -38,17 +38,20 @@ class BaseConfigSettings(models.TransientModel):
|
||||
|
||||
@api.model
|
||||
def get_default_fields(self, fields):
|
||||
res = super(BaseConfigSettings, self).get_default_fields(fields)
|
||||
default_external_email_server = self.env['ir.config_parameter'].sudo().get_param('base_setup.default_external_email_server', default=False)
|
||||
default_user_rights = self.env['ir.config_parameter'].sudo().get_param('base_setup.default_user_rights', default=False)
|
||||
default_custom_report_footer = self.env['ir.config_parameter'].sudo().get_param('base_setup.default_custom_report_footer', default=False)
|
||||
return {
|
||||
res.update({
|
||||
'default_external_email_server': default_external_email_server,
|
||||
'default_user_rights': default_user_rights,
|
||||
'default_custom_report_footer': default_custom_report_footer,
|
||||
}
|
||||
})
|
||||
return res
|
||||
|
||||
@api.multi
|
||||
def set_default_fields(self):
|
||||
def set_fields(self):
|
||||
super(BaseConfigSettings, self).set_fields()
|
||||
self.env['ir.config_parameter'].sudo().set_param("base_setup.default_external_email_server", self.default_external_email_server)
|
||||
self.env['ir.config_parameter'].sudo().set_param("base_setup.default_user_rights", self.default_user_rights)
|
||||
self.env['ir.config_parameter'].sudo().set_param("base_setup.default_custom_report_footer", self.default_custom_report_footer)
|
||||
|
||||
@@ -21,13 +21,16 @@ class HrExpenseConfigSettings(models.TransientModel):
|
||||
|
||||
@api.model
|
||||
def get_default_fields(self, fields):
|
||||
return dict(
|
||||
res = super(HrExpenseConfigSettings, self).get_default_fields(fields)
|
||||
res.update(dict(
|
||||
alias_prefix=self.env.ref('hr_expense.mail_alias_expense').alias_name,
|
||||
use_mailgateway=self.env['ir.config_parameter'].sudo().get_param('hr_expense.use_mailgateway'),
|
||||
)
|
||||
))
|
||||
return res
|
||||
|
||||
@api.multi
|
||||
def set_fields(self):
|
||||
super(HrExpenseConfigSettings, self).set_fields()
|
||||
self.env.ref('hr_expense.mail_alias_expense').write({'alias_name': self.alias_prefix})
|
||||
self.env['ir.config_parameter'].sudo().set_param('hr_expense.use_mailgateway', self.use_mailgateway)
|
||||
|
||||
|
||||
@@ -25,12 +25,15 @@ class MrpConfigSettings(models.TransientModel):
|
||||
|
||||
@api.model
|
||||
def get_default_fields(self, fields):
|
||||
return dict(
|
||||
res = super(MrpConfigSettings, self).get_default_fields(fields)
|
||||
res.update(dict(
|
||||
use_manufacturing_lead=self.env['ir.config_parameter'].sudo().get_param('mrp.use_manufacturing_lead')
|
||||
)
|
||||
))
|
||||
return res
|
||||
|
||||
@api.multi
|
||||
def set_fields(self):
|
||||
super(MrpConfigSettings, self).set_fields()
|
||||
self.env['ir.config_parameter'].sudo().set_param('mrp.use_manufacturing_lead', self.use_manufacturing_lead)
|
||||
|
||||
@api.onchange('use_manufacturing_lead')
|
||||
|
||||
@@ -59,11 +59,14 @@ class PosConfiguration(models.TransientModel):
|
||||
})
|
||||
|
||||
def get_default_fields(self, fields):
|
||||
return dict(
|
||||
res = super(PosConfiguration, self).get_default_fields(fields)
|
||||
res.update(dict(
|
||||
use_pos_sale_price=self.env['ir.config_parameter'].sudo().get_param('pos.use_pos_sale_price'),
|
||||
pos_pricelist_setting=self.env['ir.config_parameter'].sudo().get_param('pos.pos_pricelist_setting'),
|
||||
)
|
||||
))
|
||||
return res
|
||||
|
||||
def set_fields(self):
|
||||
super(PosConfiguration, self).set_fields()
|
||||
self.env['ir.config_parameter'].sudo().set_param('pos.use_pos_sale_price', self.use_pos_sale_price)
|
||||
self.env['ir.config_parameter'].sudo().set_param('pos.pos_pricelist_setting', self.pos_pricelist_setting)
|
||||
|
||||
@@ -19,9 +19,12 @@ class StockConfigSettings(models.TransientModel):
|
||||
self.po_lead = 0.0
|
||||
|
||||
def get_default_fields(self, fields):
|
||||
return dict(
|
||||
res = super(StockConfigSettings, self).get_default_fields(fields)
|
||||
res.update(dict(
|
||||
use_po_lead=self.env['ir.config_parameter'].sudo().get_param('purchase.use_po_lead')
|
||||
)
|
||||
))
|
||||
return res
|
||||
|
||||
def set_fields(self):
|
||||
super(StockConfigSettings, self).set_fields()
|
||||
self.env['ir.config_parameter'].sudo().set_param('purchase.use_po_lead', self.use_po_lead)
|
||||
|
||||
@@ -148,14 +148,17 @@ class SaleConfiguration(models.TransientModel):
|
||||
|
||||
@api.model
|
||||
def get_default_fields(self, fields):
|
||||
return dict(
|
||||
res = super(SaleConfiguration, self).get_default_fields(fields)
|
||||
res.update(dict(
|
||||
use_sale_note=self.env['ir.config_parameter'].sudo().get_param('sale.use_sale_note', default=False),
|
||||
auto_done_setting=self.env['ir.config_parameter'].sudo().get_param('sale.auto_done_setting'),
|
||||
default_deposit_product_id=self.env['ir.config_parameter'].sudo().get_param('sale.default_deposit_product_id'),
|
||||
)
|
||||
))
|
||||
return res
|
||||
|
||||
@api.multi
|
||||
def set_fields(self):
|
||||
super(SaleConfiguration, self).set_fields()
|
||||
self.env['ir.config_parameter'].sudo().set_param("sale.use_sale_note", self.use_sale_note)
|
||||
self.env['ir.config_parameter'].sudo().set_param("sale.auto_done_setting", self.auto_done_setting)
|
||||
self.env['ir.config_parameter'].sudo().set_param("sale.default_deposit_product_id", self.default_deposit_product_id.id)
|
||||
|
||||
@@ -23,9 +23,12 @@ class StockConfigSettings(models.TransientModel):
|
||||
self.security_lead = 0.0
|
||||
|
||||
def get_default_fields(self, fields):
|
||||
return dict(
|
||||
res = super(StockConfigSettings, self).get_default_fields(fields)
|
||||
res.update(dict(
|
||||
use_security_lead=self.env['ir.config_parameter'].sudo().get_param('sale_stock.use_security_lead')
|
||||
)
|
||||
))
|
||||
return res
|
||||
|
||||
def set_fields(self):
|
||||
super(StockConfigSettings, self).set_fields()
|
||||
self.env['ir.config_parameter'].sudo().set_param('sale_stock.use_security_lead', self.use_security_lead)
|
||||
|
||||
@@ -77,12 +77,15 @@ class StockConfigSettings(models.TransientModel):
|
||||
|
||||
@api.model
|
||||
def get_default_fields(self, fields):
|
||||
return dict(
|
||||
res = super(StockConfigSettings, self).get_default_fields(fields)
|
||||
res.update(dict(
|
||||
use_propagation_minimum_delta=self.env['ir.config_parameter'].sudo().get_param('stock.use_propagation_minimum_delta')
|
||||
)
|
||||
))
|
||||
return res
|
||||
|
||||
@api.multi
|
||||
def set_default_fields(self):
|
||||
def set_fields(self):
|
||||
super(StockConfigSettings, self).set_fields()
|
||||
self.env['ir.config_parameter'].sudo().set_param('stock.use_propagation_minimum_delta', self.use_propagation_minimum_delta)
|
||||
|
||||
@api.multi
|
||||
|
||||
@@ -87,16 +87,19 @@ class WebsiteConfigSettings(models.TransientModel):
|
||||
def get_default_fields(self, fields):
|
||||
if not self.user_has_groups('website.group_website_designer'):
|
||||
raise AccessDenied()
|
||||
return dict(
|
||||
res = super(WebsiteConfigSettings, self).get_default_fields(fields)
|
||||
res.update(dict(
|
||||
has_google_analytics=self.env['ir.config_parameter'].sudo().get_param('website.has_google_analytics'),
|
||||
has_google_analytics_dashboard=self.env['ir.config_parameter'].sudo().get_param('website.has_google_analytics_dashboard'),
|
||||
has_google_maps=self.env['ir.config_parameter'].sudo().get_param('website.has_google_maps'),
|
||||
)
|
||||
))
|
||||
return res
|
||||
|
||||
@api.multi
|
||||
def set_fields(self):
|
||||
if not self.user_has_groups('website.group_website_designer'):
|
||||
raise AccessDenied()
|
||||
super(WebsiteConfigSettings, self).set_fields()
|
||||
self.env['ir.config_parameter'].sudo().set_param('website.has_google_analytics', self.has_google_analytics)
|
||||
self.env['ir.config_parameter'].sudo().set_param('website.has_google_analytics_dashboard', self.has_google_analytics_dashboard)
|
||||
self.env['ir.config_parameter'].sudo().set_param('website.has_google_maps', self.has_google_maps)
|
||||
|
||||
@@ -478,6 +478,9 @@ class ResConfigSettings(models.TransientModel, ResConfigModuleInstallationMixin)
|
||||
|
||||
return {'default': defaults, 'group': groups, 'module': modules, 'other': others}
|
||||
|
||||
def get_default_fields(self, fields):
|
||||
return {}
|
||||
|
||||
@api.model
|
||||
def default_get(self, fields):
|
||||
IrValues = self.env['ir.values']
|
||||
@@ -504,12 +507,17 @@ class ResConfigSettings(models.TransientModel, ResConfigModuleInstallationMixin)
|
||||
res[name] = int(res[name])
|
||||
|
||||
# other fields: call all methods that start with 'get_default_'
|
||||
# and call the method 'get_default_fields'
|
||||
for method in dir(self):
|
||||
if method.startswith('get_default_'):
|
||||
if method.startswith('get_default_') and method is not 'get_default_fields':
|
||||
res.update(getattr(self, method)(fields))
|
||||
res.update(self.get_default_fields(fields))
|
||||
|
||||
return res
|
||||
|
||||
def set_fields(self):
|
||||
pass
|
||||
|
||||
@api.multi
|
||||
def execute(self):
|
||||
self.ensure_one()
|
||||
@@ -540,9 +548,11 @@ class ResConfigSettings(models.TransientModel, ResConfigModuleInstallationMixin)
|
||||
implied_group.write({'users': [(3, user.id) for user in groups.mapped('users')]})
|
||||
|
||||
# other fields: execute all methods that start with 'set_'
|
||||
# and the method 'set_fields'
|
||||
for method in dir(self):
|
||||
if method.startswith('set_'):
|
||||
if method.startswith('set_') and method is not 'set_fields':
|
||||
getattr(self, method)()
|
||||
self.set_fields()
|
||||
|
||||
# module fields: install/uninstall the selected modules
|
||||
to_install = []
|
||||
|
||||
Reference in New Issue
Block a user