diff --git a/addons/base_setup/models/base_config_settings.py b/addons/base_setup/models/base_config_settings.py index c1a0076957c..b59347450c4 100644 --- a/addons/base_setup/models/base_config_settings.py +++ b/addons/base_setup/models/base_config_settings.py @@ -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) diff --git a/addons/hr_expense/models/hr_expense_config_settings.py b/addons/hr_expense/models/hr_expense_config_settings.py index 21da58f7acc..d5f08a396f6 100644 --- a/addons/hr_expense/models/hr_expense_config_settings.py +++ b/addons/hr_expense/models/hr_expense_config_settings.py @@ -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) diff --git a/addons/mrp/models/mrp_config_settings.py b/addons/mrp/models/mrp_config_settings.py index 41444ef60e2..56eefc9ca88 100644 --- a/addons/mrp/models/mrp_config_settings.py +++ b/addons/mrp/models/mrp_config_settings.py @@ -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') diff --git a/addons/point_of_sale/models/pos_config_settings.py b/addons/point_of_sale/models/pos_config_settings.py index 3121641d7b0..96e2f5a1c5a 100644 --- a/addons/point_of_sale/models/pos_config_settings.py +++ b/addons/point_of_sale/models/pos_config_settings.py @@ -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) diff --git a/addons/purchase/models/stock_config_settings.py b/addons/purchase/models/stock_config_settings.py index 32804ad88dd..6ba061aae94 100644 --- a/addons/purchase/models/stock_config_settings.py +++ b/addons/purchase/models/stock_config_settings.py @@ -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) diff --git a/addons/sale/models/sale_config_settings.py b/addons/sale/models/sale_config_settings.py index 0b6d5df9b9e..b53c86ccd6a 100644 --- a/addons/sale/models/sale_config_settings.py +++ b/addons/sale/models/sale_config_settings.py @@ -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) diff --git a/addons/sale_stock/models/stock_config_settings.py b/addons/sale_stock/models/stock_config_settings.py index 9695caf0636..f2aa60be2b9 100644 --- a/addons/sale_stock/models/stock_config_settings.py +++ b/addons/sale_stock/models/stock_config_settings.py @@ -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) diff --git a/addons/stock/models/stock_config_settings.py b/addons/stock/models/stock_config_settings.py index 1f99aa0cceb..acbc6ffa5cc 100644 --- a/addons/stock/models/stock_config_settings.py +++ b/addons/stock/models/stock_config_settings.py @@ -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 diff --git a/addons/website/models/website_config_settings.py b/addons/website/models/website_config_settings.py index b1a8f26608d..3d9c295862b 100644 --- a/addons/website/models/website_config_settings.py +++ b/addons/website/models/website_config_settings.py @@ -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) diff --git a/odoo/addons/base/res/res_config.py b/odoo/addons/base/res/res_config.py index 27dc8e3df7f..eb27974bba2 100644 --- a/odoo/addons/base/res/res_config.py +++ b/odoo/addons/base/res/res_config.py @@ -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 = []