diff --git a/addons/account/__manifest__.py b/addons/account/__manifest__.py index fd56de27e03..d2860d183d0 100644 --- a/addons/account/__manifest__.py +++ b/addons/account/__manifest__.py @@ -56,7 +56,7 @@ Core mechanisms for the accounting modules. To display the menuitems, install th 'views/report_agedpartnerbalance.xml', 'views/tax_adjustments.xml', 'wizard/wizard_tax_adjustments_view.xml', - 'views/res_config_view.xml', + 'views/account_config_settings_views.xml', 'views/web_planner_data.xml', 'views/account_journal_dashboard_view.xml', 'report/account_report_payment_receipt_templates.xml', diff --git a/addons/account/models/__init__.py b/addons/account/models/__init__.py index b96da81cb4b..440f89134bf 100644 --- a/addons/account/models/__init__.py +++ b/addons/account/models/__init__.py @@ -11,5 +11,5 @@ from . import account_analytic_line from . import account_journal_dashboard from . import product from . import company -from . import res_config +from . import account_config_settings from . import web_planner diff --git a/addons/account/models/res_config.py b/addons/account/models/account_config_settings.py similarity index 92% rename from addons/account/models/res_config.py rename to addons/account/models/account_config_settings.py index 5f8f83826ef..21f1b10eeb7 100644 --- a/addons/account/models/res_config.py +++ b/addons/account/models/account_config_settings.py @@ -60,34 +60,28 @@ class AccountConfigSettings(models.TransientModel): module_l10n_eu_service = fields.Boolean(string="EU Digital Goods VAT") @api.model - def get_default_tax_fields(self, fields): - default_purchase_tax_id = self.env['ir.config_parameter'].sudo().get_param('account.default_purchase_tax_id', default=False) - default_sale_tax_id = self.env['ir.config_parameter'].sudo().get_param('account.default_sale_tax_id', default=False) - return dict(default_purchase_tax_id=int(default_purchase_tax_id), default_sale_tax_id=int(default_sale_tax_id)) + def get_values(self): + res = super(AccountConfigSettings, self).get_values() + params = self.env['ir.config_parameter'].sudo() + res.update( + default_purchase_tax_id=params.get_param('account.default_purchase_tax_id', default=False), + default_sale_tax_id=params.get_param('account.default_sale_tax_id', default=False) + ) + return res @api.multi - def set_default_tax_fields(self): + def set_values(self): + super(AccountConfigSettings, self).set_values() self.env['ir.config_parameter'].sudo().set_param("account.default_purchase_tax_id", self.default_purchase_tax_id.id) self.env['ir.config_parameter'].sudo().set_param("account.default_sale_tax_id", self.default_sale_tax_id.id) - - @api.depends('company_id') - def _compute_has_chart_of_accounts(self): - self.has_chart_of_accounts = bool(self.company_id.chart_template_id) - - def set_group_multi_currency(self): if self.group_multi_currency: self.env.ref('base.group_user').write({'implied_ids': [(4, self.env.ref('product.group_sale_pricelist').id)]}) - return True - - def set_default_product_taxes(self): """ Set the product taxes if they have changed """ ir_values_obj = self.env['ir.values'] if self.default_sale_tax_id: ir_values_obj.sudo().set_default('product.template', "taxes_id", [self.default_sale_tax_id.id], for_all_users=True, company_id=self.company_id.id) if self.default_purchase_tax_id: ir_values_obj.sudo().set_default('product.template', "supplier_taxes_id", [self.default_purchase_tax_id.id], for_all_users=True, company_id=self.company_id.id) - - def set_chart_of_accounts(self): """ install a chart of accounts for the given company (if required) """ if self.chart_template_id and not self.has_chart_of_accounts and self.company_id.expects_chart_of_accounts: if self.company_id.chart_template_id and self.chart_template_id != self.company_id.chart_template_id: @@ -108,6 +102,10 @@ class AccountConfigSettings(models.TransientModel): }) wizard.execute() + @api.depends('company_id') + def _compute_has_chart_of_accounts(self): + self.has_chart_of_accounts = bool(self.company_id.chart_template_id) + @api.onchange('group_analytic_accounting') def onchange_analytic_accounting(self): if self.group_analytic_accounting: diff --git a/addons/account/models/chart_template.py b/addons/account/models/chart_template.py index 6e6eb70c22b..a7db0c251fe 100644 --- a/addons/account/models/chart_template.py +++ b/addons/account/models/chart_template.py @@ -147,7 +147,7 @@ class AccountChartTemplate(models.Model): todo = self.env['ir.actions.todo'] action_rec = self.env['ir.model.data'].xmlid_to_object('account.action_wizard_multi_chart') if action_rec: - todo.create({'action_id': action_rec.id, 'name': _('Choose Accounting Template'), 'type': 'automatic'}) + todo.create({'action_id': action_rec.id, 'name': _('Choose Accounting Template')}) return True @api.model diff --git a/addons/account/views/res_config_view.xml b/addons/account/views/account_config_settings_views.xml similarity index 100% rename from addons/account/views/res_config_view.xml rename to addons/account/views/account_config_settings_views.xml diff --git a/addons/account_accountant/__manifest__.py b/addons/account_accountant/__manifest__.py index d9f442828b4..79d4f92dacb 100644 --- a/addons/account_accountant/__manifest__.py +++ b/addons/account_accountant/__manifest__.py @@ -19,7 +19,7 @@ It assigns manager and user access rights to the Administrator for the accountin 'data/account_accountant_data.xml', 'security/account_accountant_security.xml', 'views/account_accountant_templates.xml', - 'views/res_config_view.xml', + 'views/account_config_settings_views.xml', 'views/product_views.xml', ], 'demo': ['data/account_accountant_demo.xml'], diff --git a/addons/account_accountant/models/__init__.py b/addons/account_accountant/models/__init__.py index c9d3ea6ad49..cdb5588b96c 100644 --- a/addons/account_accountant/models/__init__.py +++ b/addons/account_accountant/models/__init__.py @@ -1,4 +1,4 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from . import res_config +from . import account_config_settings diff --git a/addons/account_accountant/models/res_config.py b/addons/account_accountant/models/account_config_settings.py similarity index 100% rename from addons/account_accountant/models/res_config.py rename to addons/account_accountant/models/account_config_settings.py diff --git a/addons/account_accountant/views/res_config_view.xml b/addons/account_accountant/views/account_config_settings_views.xml similarity index 100% rename from addons/account_accountant/views/res_config_view.xml rename to addons/account_accountant/views/account_config_settings_views.xml diff --git a/addons/account_analytic_default/__manifest__.py b/addons/account_analytic_default/__manifest__.py index f16196f24e5..e41e554f1ea 100644 --- a/addons/account_analytic_default/__manifest__.py +++ b/addons/account_analytic_default/__manifest__.py @@ -24,7 +24,7 @@ Allows to automatically select analytic accounts based on criterions: 'security/account_analytic_default_security.xml', 'views/account_analytic_default_view.xml', 'views/product_views.xml', - 'views/res_config_view.xml', + 'views/account_config_settings_views.xml', ], 'installable': True, } diff --git a/addons/account_analytic_default/views/res_config_view.xml b/addons/account_analytic_default/views/account_config_settings_views.xml similarity index 100% rename from addons/account_analytic_default/views/res_config_view.xml rename to addons/account_analytic_default/views/account_config_settings_views.xml diff --git a/addons/account_asset/__manifest__.py b/addons/account_asset/__manifest__.py index f59459d9a92..bc9aa5f13c3 100644 --- a/addons/account_asset/__manifest__.py +++ b/addons/account_asset/__manifest__.py @@ -26,7 +26,7 @@ Keeps track of depreciations, and creates corresponding journal entries. 'views/account_invoice_views.xml', 'views/account_asset_templates.xml', 'views/product_views.xml', - 'views/res_config_view.xml', + 'views/account_config_settings_views.xml', 'report/account_asset_report_views.xml', 'data/account_asset_data.xml', ], diff --git a/addons/account_asset/views/res_config_view.xml b/addons/account_asset/views/account_config_settings_views.xml similarity index 100% rename from addons/account_asset/views/res_config_view.xml rename to addons/account_asset/views/account_config_settings_views.xml diff --git a/addons/account_budget/__manifest__.py b/addons/account_budget/__manifest__.py index 343f900d066..fd839a6dfd9 100644 --- a/addons/account_budget/__manifest__.py +++ b/addons/account_budget/__manifest__.py @@ -34,7 +34,7 @@ Three reports are available: 'security/account_budget_security.xml', 'views/account_analytic_account_views.xml', 'views/account_budget_views.xml', - 'views/res_config_view.xml', + 'views/account_config_settings_views.xml', ], 'demo': ['data/account_budget_demo.xml'], } diff --git a/addons/account_budget/views/res_config_view.xml b/addons/account_budget/views/account_config_settings_views.xml similarity index 100% rename from addons/account_budget/views/res_config_view.xml rename to addons/account_budget/views/account_config_settings_views.xml diff --git a/addons/auth_oauth/__manifest__.py b/addons/auth_oauth/__manifest__.py index b6f8805dedc..d6ab043d07e 100644 --- a/addons/auth_oauth/__manifest__.py +++ b/addons/auth_oauth/__manifest__.py @@ -15,7 +15,7 @@ Allow users to login through OAuth2 Provider. 'data/auth_oauth_data.yml', 'views/auth_oauth_views.xml', 'views/res_users_views.xml', - 'views/res_config_views.xml', + 'views/base_config_settings_views.xml', 'views/auth_oauth_templates.xml', 'security/ir.model.access.csv', ], diff --git a/addons/auth_oauth/models/__init__.py b/addons/auth_oauth/models/__init__.py index 64bbaa4e3d4..9b02f6dc910 100644 --- a/addons/auth_oauth/models/__init__.py +++ b/addons/auth_oauth/models/__init__.py @@ -2,6 +2,6 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import auth_oauth +from . import base_config_settings from . import ir_config_parameter -from . import res_config from . import res_users diff --git a/addons/auth_oauth/models/res_config.py b/addons/auth_oauth/models/base_config_settings.py similarity index 51% rename from addons/auth_oauth/models/res_config.py rename to addons/auth_oauth/models/base_config_settings.py index 20784bd9d18..86bbcdc14c0 100644 --- a/addons/auth_oauth/models/res_config.py +++ b/addons/auth_oauth/models/base_config_settings.py @@ -15,36 +15,25 @@ class BaseConfigSettings(models.TransientModel): def get_uri(self): return "%s/auth_oauth/signin" % (self.env['ir.config_parameter'].get_param('web.base.url')) - def _compute_server_uri(self): - uri = self.get_uri() - for setting in self: - setting.server_uri_google = uri - auth_oauth_google_enabled = fields.Boolean(string='Allow users to sign in with Google') auth_oauth_google_client_id = fields.Char(string='Client ID') - server_uri_google = fields.Char(compute='_compute_server_uri', string='Server uri') + server_uri_google = fields.Char(string='Server uri') @api.model - def default_get(self, fields): - settings = super(BaseConfigSettings, self).default_get(fields) - settings.update(self.get_oauth_providers(fields)) - return settings - - @api.model - def get_oauth_providers(self, fields): + def get_values(self): + res = super(BaseConfigSettings, self).get_values() google_provider = self.env.ref('auth_oauth.provider_google', False) - return { - 'auth_oauth_google_enabled': google_provider.enabled, - 'auth_oauth_google_client_id': google_provider.client_id, - 'server_uri_google': self.get_uri() - } + res.update( + auth_oauth_google_enabled=google_provider.enabled, + auth_oauth_google_client_id=google_provider.client_id, + server_uri_google=self.get_uri(), + ) + return res - @api.multi - def set_oauth_providers(self): - self.ensure_one() + def set_values(self): + super(BaseConfigSettings, self).set_values() google_provider = self.env.ref('auth_oauth.provider_google', False) - rg = { + google_provider.write({ 'enabled': self.auth_oauth_google_enabled, 'client_id': self.auth_oauth_google_client_id, - } - google_provider.write(rg) + }) diff --git a/addons/auth_oauth/views/res_config_views.xml b/addons/auth_oauth/views/base_config_settings_views.xml similarity index 100% rename from addons/auth_oauth/views/res_config_views.xml rename to addons/auth_oauth/views/base_config_settings_views.xml diff --git a/addons/auth_signup/__manifest__.py b/addons/auth_signup/__manifest__.py index 9b59ad0ad63..d2cd094be1a 100644 --- a/addons/auth_signup/__manifest__.py +++ b/addons/auth_signup/__manifest__.py @@ -17,7 +17,7 @@ Allow users to sign up and reset their password ], 'data': [ 'data/auth_signup_data.xml', - 'views/res_config_views.xml', + 'views/base_config_settings_views.xml', 'views/res_users_views.xml', 'views/auth_signup_login_templates.xml', ], diff --git a/addons/auth_signup/models/__init__.py b/addons/auth_signup/models/__init__.py index 1c34c9b408b..fb8aab1c50d 100644 --- a/addons/auth_signup/models/__init__.py +++ b/addons/auth_signup/models/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from . import res_config -from . import res_users +from . import base_config_settings from . import res_partner +from . import res_users diff --git a/addons/auth_signup/models/res_config.py b/addons/auth_signup/models/base_config_settings.py similarity index 67% rename from addons/auth_signup/models/res_config.py rename to addons/auth_signup/models/base_config_settings.py index c8b4342443c..eb830c24e37 100644 --- a/addons/auth_signup/models/res_config.py +++ b/addons/auth_signup/models/base_config_settings.py @@ -12,18 +12,21 @@ class BaseConfigSettings(models.TransientModel): auth_signup_template_user_id = fields.Many2one('res.users', string='Template user for new users created through signup') @api.model - def get_default_auth_signup_template_user_id(self, fields): - get_param = self.env['ir.config_parameter'].get_param + def get_values(self): + res = super(BaseConfigSettings, self).get_values() + get_param = self.env['ir.config_parameter'].sudo().get_param # we use safe_eval on the result, since the value of the parameter is a nonempty string - return { - 'auth_signup_reset_password': safe_eval(get_param('auth_signup.reset_password', 'False')), - 'auth_signup_uninvited': safe_eval(get_param('auth_signup.allow_uninvited', 'False')), - 'auth_signup_template_user_id': safe_eval(get_param('auth_signup.template_user_id', 'False')), - } + res.update( + auth_signup_reset_password=safe_eval(get_param('auth_signup.reset_password', 'False')), + auth_signup_uninvited=safe_eval(get_param('auth_signup.allow_uninvited', 'False')), + auth_signup_template_user_id=safe_eval(get_param('auth_signup.template_user_id', 'False')), + ) + return res + @api.multi - def set_auth_signup_template_user_id(self): - self.ensure_one() - set_param = self.env['ir.config_parameter'].set_param + def set_values(self): + super(BaseConfigSettings, self).set_values() + set_param = self.env['ir.config_parameter'].sudo().set_param # we store the repr of the values, since the value of the parameter is a required string set_param('auth_signup.reset_password', repr(self.auth_signup_reset_password)) set_param('auth_signup.allow_uninvited', repr(self.auth_signup_uninvited)) diff --git a/addons/auth_signup/views/res_config_views.xml b/addons/auth_signup/views/base_config_settings_views.xml similarity index 100% rename from addons/auth_signup/views/res_config_views.xml rename to addons/auth_signup/views/base_config_settings_views.xml diff --git a/addons/base_gengo/__manifest__.py b/addons/base_gengo/__manifest__.py index b741dc5b76e..688be3ecaff 100644 --- a/addons/base_gengo/__manifest__.py +++ b/addons/base_gengo/__manifest__.py @@ -18,7 +18,7 @@ This wizard will activate the CRON job and the Scheduler and will start the auto 'data': [ 'data/ir_cron_data.xml', 'views/ir_translation_views.xml', - 'views/res_config_views.xml', + 'views/base_config_settings_views.xml', 'wizard/base_gengo_translations_view.xml', ], 'demo': ['data/res_company_demo.xml'], diff --git a/addons/base_gengo/models/__init__.py b/addons/base_gengo/models/__init__.py index 7005fe4f9df..a3afdeaac10 100644 --- a/addons/base_gengo/models/__init__.py +++ b/addons/base_gengo/models/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import base_config_settings from . import ir_translation from . import res_company -from . import res_config diff --git a/addons/base_gengo/models/res_config.py b/addons/base_gengo/models/base_config_settings.py similarity index 100% rename from addons/base_gengo/models/res_config.py rename to addons/base_gengo/models/base_config_settings.py diff --git a/addons/base_gengo/views/res_config_views.xml b/addons/base_gengo/views/base_config_settings_views.xml similarity index 100% rename from addons/base_gengo/views/res_config_views.xml rename to addons/base_gengo/views/base_config_settings_views.xml diff --git a/addons/base_setup/__manifest__.py b/addons/base_setup/__manifest__.py index 74310b9625f..b6b900ad03a 100644 --- a/addons/base_setup/__manifest__.py +++ b/addons/base_setup/__manifest__.py @@ -13,7 +13,7 @@ Shows you a list of applications features to install from. """, 'depends': ['base', 'web'], 'data': [ - 'views/res_config_views.xml', + 'views/base_config_settings_views.xml', 'views/res_partner_views.xml', ], 'demo': [], diff --git a/addons/base_setup/models/__init__.py b/addons/base_setup/models/__init__.py index 45cc40bf798..d43ed2fd84b 100644 --- a/addons/base_setup/models/__init__.py +++ b/addons/base_setup/models/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from . import res_config +from . import base_config_settings diff --git a/addons/base_setup/models/res_config.py b/addons/base_setup/models/base_config_settings.py similarity index 79% rename from addons/base_setup/models/res_config.py rename to addons/base_setup/models/base_config_settings.py index c1a0076957c..b00902163cf 100644 --- a/addons/base_setup/models/res_config.py +++ b/addons/base_setup/models/base_config_settings.py @@ -37,21 +37,27 @@ class BaseConfigSettings(models.TransientModel): external_report_layout = fields.Selection(related="company_id.external_report_layout") @api.model - def get_default_fields(self, 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 { - 'default_external_email_server': default_external_email_server, - 'default_user_rights': default_user_rights, - 'default_custom_report_footer': default_custom_report_footer, - } + def get_values(self): + res = super(BaseConfigSettings, self).get_values() + params = self.env['ir.config_parameter'].sudo() + default_external_email_server = params.get_param('base_setup.default_external_email_server', default=False) + default_user_rights = params.get_param('base_setup.default_user_rights', default=False) + default_custom_report_footer = params.get_param('base_setup.default_custom_report_footer', default=False) + res.update( + default_external_email_server=default_external_email_server, + default_user_rights=default_user_rights, + default_custom_report_footer=default_custom_report_footer, + company_share_partner=not self.env.ref('base.res_partner_rule').active, + ) + return res @api.multi - def set_default_fields(self): + def set_values(self): + super(BaseConfigSettings, self).set_values() 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) + self.env.ref('base.res_partner_rule').write({'active': not self.company_share_partner}) @api.multi def open_company(self): @@ -71,18 +77,6 @@ class BaseConfigSettings(models.TransientModel): action['views'] = [[self.env.ref('base.view_users_form').id, 'form']] return action - @api.model - def get_default_company_share_partner(self, fields): - return { - 'company_share_partner': not self.env.ref('base.res_partner_rule').active - } - - @api.multi - def set_default_company_share_partner(self): - partner_rule = self.env.ref('base.res_partner_rule') - for config in self: - partner_rule.write({'active': not config.company_share_partner}) - @api.model def _prepare_report_view_action(self, template): template_id = self.env.ref(template) diff --git a/addons/base_setup/views/res_config_views.xml b/addons/base_setup/views/base_config_settings_views.xml similarity index 100% rename from addons/base_setup/views/res_config_views.xml rename to addons/base_setup/views/base_config_settings_views.xml diff --git a/addons/base_vat/__manifest__.py b/addons/base_vat/__manifest__.py index 1137585b4b9..858ebecac2b 100644 --- a/addons/base_vat/__manifest__.py +++ b/addons/base_vat/__manifest__.py @@ -39,6 +39,6 @@ only the country code will be validated. 'data': [ 'views/res_partner_views.xml', 'views/res_company_views.xml', - 'views/res_config_view.xml', + 'views/account_config_settings_views.xml', ], } diff --git a/addons/base_vat/models/__init__.py b/addons/base_vat/models/__init__.py index cd202586594..ec161810deb 100644 --- a/addons/base_vat/models/__init__.py +++ b/addons/base_vat/models/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import account_config_settings from . import res_company from . import res_partner -from . import res_config diff --git a/addons/base_vat/models/res_config.py b/addons/base_vat/models/account_config_settings.py similarity index 100% rename from addons/base_vat/models/res_config.py rename to addons/base_vat/models/account_config_settings.py diff --git a/addons/base_vat/views/res_config_view.xml b/addons/base_vat/views/account_config_settings_views.xml similarity index 100% rename from addons/base_vat/views/res_config_view.xml rename to addons/base_vat/views/account_config_settings_views.xml diff --git a/addons/crm/__manifest__.py b/addons/crm/__manifest__.py index 7781e15184b..03347c312ed 100644 --- a/addons/crm/__manifest__.py +++ b/addons/crm/__manifest__.py @@ -45,7 +45,6 @@ Dashboard for CRM will include: 'data/crm_data.xml', 'data/crm_stage_data.xml', - 'data/sales_config_settings_data.xml', 'data/crm_lead_data.xml', 'data/web_planner_data.xml', 'data/mail_template_data.xml', @@ -65,7 +64,7 @@ Dashboard for CRM will include: 'views/crm_lead_views.xml', 'views/calendar_views.xml', 'views/res_partner_views.xml', - 'views/res_config_views.xml', + 'views/sale_config_settings_views.xml', 'views/crm_team_views.xml', ], 'demo': [ diff --git a/addons/crm/data/sales_config_settings_data.xml b/addons/crm/data/sales_config_settings_data.xml deleted file mode 100644 index be269cafec9..00000000000 --- a/addons/crm/data/sales_config_settings_data.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/addons/crm/models/__init__.py b/addons/crm/models/__init__.py index ded1cea026e..8059e38d8b8 100644 --- a/addons/crm/models/__init__.py +++ b/addons/crm/models/__init__.py @@ -6,6 +6,6 @@ from . import calendar from . import crm_lead from . import crm_stage from . import crm_team -from . import res_config +from . import sale_config_settings from . import res_partner from . import web_planner diff --git a/addons/crm/models/crm_team.py b/addons/crm/models/crm_team.py index ca9421be935..3fe31131944 100644 --- a/addons/crm/models/crm_team.py +++ b/addons/crm/models/crm_team.py @@ -120,13 +120,6 @@ class Team(models.Model): if not self.use_opportunities and self.dashboard_graph_model == 'crm.opportunity.report': raise ValidationError(_("Dashboard graph content cannot be Pipeline if the sales channel doesn't use it. (Pipeline is unchecked.)")) - @api.model - def create(self, vals): - generate_alias_name = self.env['ir.values'].get_default('sale.config.settings', 'generate_sales_team_alias') - if generate_alias_name and not vals.get('alias_name'): - vals['alias_name'] = vals.get('name') - return super(Team, self).create(vals) - @api.multi def write(self, vals): result = super(Team, self).write(vals) diff --git a/addons/crm/models/res_config.py b/addons/crm/models/res_config.py deleted file mode 100644 index 0af455f6bdc..00000000000 --- a/addons/crm/models/res_config.py +++ /dev/null @@ -1,82 +0,0 @@ -# -*- coding: utf-8 -*- -# Part of Odoo. See LICENSE file for full copyright and licensing details. - -from odoo import api, fields, models - - -class CRMSettings(models.TransientModel): - _inherit = 'sale.config.settings' - - generate_sales_team_alias = fields.Boolean("Automatically generate an email alias at the sales channel creation", - help="Odoo will generate an email alias based on the sales channel name") - alias_prefix = fields.Char('Default Alias Name for Leads') - alias_domain = fields.Char('Alias Domain', default=lambda self: self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain")) - # TDE TODO: as it is not linked to ir.values anymore, it should be renamed, but not in stable - default_generate_lead_from_alias = fields.Boolean('Manual Assignation of Emails') - group_use_lead = fields.Boolean(string="Leads", implied_group='crm.group_use_lead') - module_crm_phone_validation = fields.Boolean("Phone Validation") - module_crm_voip = fields.Boolean("Asterisk (VoIP)") - - def _find_default_lead_alias_id(self): - alias = self.env.ref('crm.mail_alias_lead_info', False) - if not alias: - alias = self.env['mail.alias'].search([ - ('alias_model_id.model', '=', 'crm.lead'), - ('alias_force_thread_id', '=', False), - ('alias_parent_model_id.model', '=', 'crm.team'), - ('alias_parent_thread_id', '=', False), - ('alias_defaults', '=', '{}') - ], limit=1) - return alias - - @api.model - def get_default_generate_sales_team_alias(self, fields): - return { - 'generate_sales_team_alias': self.env['ir.values'].get_default('sale.config.settings', 'generate_sales_team_alias') - } - - @api.multi - def set_default_generate_sales_team_alias(self): - IrValues = self.env['ir.values'] - if self.env['res.users'].has_group('base.group_erp_manager'): - IrValues = IrValues.sudo() - IrValues.set_default('sale.config.settings', 'generate_sales_team_alias', self.generate_sales_team_alias) - - @api.model - def get_default_default_generate_lead_from_alias(self, fields): - return { - 'default_generate_lead_from_alias': self.env['ir.config_parameter'].sudo().get_param('sale_config_settings.default_generate_lead_from_alias') - } - - @api.multi - def set_default_default_generate_lead_from_alias(self): - self.env['ir.config_parameter'].sudo().set_param('sale_config_settings.default_generate_lead_from_alias', self.default_generate_lead_from_alias) - - @api.onchange('group_use_lead') - def _onchange_group_use_lead(self): - """ Reset alias / leads configuration if leads are not used """ - if not self.group_use_lead: - self.default_generate_lead_from_alias = False - - @api.onchange('default_generate_lead_from_alias') - def _onchange_default_generate_lead_from_alias(self): - if self.default_generate_lead_from_alias: - self.alias_prefix = self.alias_prefix or 'info' - else: - self.alias_prefix = False - - @api.model - def get_default_alias_prefix(self, fields): - alias = self._find_default_lead_alias_id() - return {'alias_prefix': alias.alias_name if alias else False} - - @api.multi - def set_default_alias_prefix(self): - for record in self: - alias = self._find_default_lead_alias_id() - if alias: - alias.write({'alias_name': record.alias_prefix}) - else: - self.env['mail.alias'].with_context(alias_model_name='crm.lead', alias_parent_model_name='crm.team').create({'alias_name': record.alias_prefix}) - - return True diff --git a/addons/crm/models/sale_config_settings.py b/addons/crm/models/sale_config_settings.py new file mode 100644 index 00000000000..729d3c16817 --- /dev/null +++ b/addons/crm/models/sale_config_settings.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models + + +class SaleConfigSettings(models.TransientModel): + _inherit = 'sale.config.settings' + + alias_prefix = fields.Char('Default Alias Name for Leads') + alias_domain = fields.Char('Alias Domain', default=lambda self: self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain")) + generate_lead_from_alias = fields.Boolean('Manual Assignation of Emails') + group_use_lead = fields.Boolean(string="Leads", implied_group='crm.group_use_lead') + module_crm_phone_validation = fields.Boolean("Phone Validation") + module_crm_voip = fields.Boolean("Asterisk (VoIP)") + + def _find_default_lead_alias_id(self): + alias = self.env.ref('crm.mail_alias_lead_info', False) + if not alias: + alias = self.env['mail.alias'].search([ + ('alias_model_id.model', '=', 'crm.lead'), + ('alias_force_thread_id', '=', False), + ('alias_parent_model_id.model', '=', 'crm.team'), + ('alias_parent_thread_id', '=', False), + ('alias_defaults', '=', '{}') + ], limit=1) + return alias + + @api.onchange('group_use_lead') + def _onchange_group_use_lead(self): + """ Reset alias / leads configuration if leads are not used """ + if not self.group_use_lead: + self.generate_lead_from_alias = False + + @api.onchange('generate_lead_from_alias') + def _onchange_generate_lead_from_alias(self): + self.alias_prefix = 'info' if self.generate_lead_from_alias else False + + @api.model + def get_values(self): + res = super(SaleConfigSettings, self).get_values() + alias = self._find_default_lead_alias_id() + res.update( + alias_prefix=alias.alias_name if alias else False, + generate_lead_from_alias=self.env['ir.config_parameter'].sudo().get_param('crm.generate_lead_from_alias') + ) + return res + + @api.multi + def set_values(self): + super(SaleConfigSettings, self).set_values() + self.env['ir.config_parameter'].sudo().set_param('crm.generate_lead_from_alias', self.generate_lead_from_alias) + alias = self._find_default_lead_alias_id() + if alias: + alias.write({'alias_name': self.alias_prefix}) + else: + self.env['mail.alias'].with_context( + alias_model_name='crm.lead', + alias_parent_model_name='crm.team').create({'alias_name': self.alias_prefix}) diff --git a/addons/crm/views/res_config_views.xml b/addons/crm/views/sale_config_settings_views.xml similarity index 95% rename from addons/crm/views/res_config_views.xml rename to addons/crm/views/sale_config_settings_views.xml index 0a60a0e6dbf..d6ed8df62df 100644 --- a/addons/crm/views/res_config_views.xml +++ b/addons/crm/views/sale_config_settings_views.xml @@ -25,7 +25,7 @@ title="Emails received to that address generate new leads not assigned to any sales channel yet. This can be made when converting them into opportunities. Incoming emails can be automatically assigned to specific sales channels. To do so, set an email alias on the sales channel." groups="base.group_no_one">
- +
-
+
diff --git a/addons/google_calendar/__manifest__.py b/addons/google_calendar/__manifest__.py index 3a722b9d923..b933743351d 100644 --- a/addons/google_calendar/__manifest__.py +++ b/addons/google_calendar/__manifest__.py @@ -16,7 +16,7 @@ The module adds the possibility to synchronize Google Calendar with Odoo 'data/google_calendar_data.xml', 'data/google_calendar_data.xml', 'security/ir.model.access.csv', - 'views/res_config_views.xml', + 'views/base_config_settings_views.xml', 'views/res_users_views.xml', 'views/google_calendar_templates.xml', ], diff --git a/addons/google_calendar/models/__init__.py b/addons/google_calendar/models/__init__.py index 23cba3b99b3..28d5732446b 100644 --- a/addons/google_calendar/models/__init__.py +++ b/addons/google_calendar/models/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import base_config_settings from . import calendar -from . import res_users from . import google_calendar -from . import res_config +from . import res_users diff --git a/addons/google_calendar/models/base_config_settings.py b/addons/google_calendar/models/base_config_settings.py new file mode 100644 index 00000000000..e4a1ae52022 --- /dev/null +++ b/addons/google_calendar/models/base_config_settings.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models + + +class BaseConfigSettings(models.TransientModel): + _inherit = 'base.config.settings' + + cal_client_id = fields.Char("Client_id") + cal_client_secret = fields.Char("Client_key") + server_uri = fields.Char('URI for tuto') + + def set_values(self): + super(BaseConfigSettings, self).set_values() + set_param = self.env['ir.config_parameter'].set_param + set_param('google_calendar_client_id', (self.cal_client_id or '').strip()) + set_param('google_calendar_client_secret', (self.cal_client_secret or '').strip()) + + @api.model + def get_values(self): + res = super(BaseConfigSettings, self).get_values() + get_param = self.env['ir.config_parameter'].sudo().get_param + res.update( + cal_client_id=get_param('google_calendar_client_id', default=''), + cal_client_secret=get_param('google_calendar_client_secret', default=''), + server_uri="%s/google_account/authentication" % get_param('web.base.url', default="http://yourcompany.odoo.com"), + ) + return res diff --git a/addons/google_calendar/models/res_config.py b/addons/google_calendar/models/res_config.py deleted file mode 100644 index 3c4f0a686bf..00000000000 --- a/addons/google_calendar/models/res_config.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Part of Odoo. See LICENSE file for full copyright and licensing details. - -from odoo import fields, models - - -class CalendarSettings(models.TransientModel): - - _inherit = 'base.config.settings' - - cal_client_id = fields.Char("Client_id") - cal_client_secret = fields.Char("Client_key") - server_uri = fields.Char('URI for tuto') - - def set_calset(self): - set_param = self.env['ir.config_parameter'].set_param - set_param('google_calendar_client_id', (self.cal_client_id or '').strip()) - set_param('google_calendar_client_secret', (self.cal_client_secret or '').strip()) - - def get_default_all(self, fields): - get_param = self.env['ir.config_parameter'].get_param - cal_client_id = get_param('google_calendar_client_id', default='') - cal_client_secret = get_param('google_calendar_client_secret', default='') - server_uri = "%s/google_account/authentication" % get_param('web.base.url', default="http://yourcompany.odoo.com") - return dict(cal_client_id=cal_client_id, cal_client_secret=cal_client_secret, server_uri=server_uri) diff --git a/addons/google_calendar/views/res_config_views.xml b/addons/google_calendar/views/base_config_settings_views.xml similarity index 100% rename from addons/google_calendar/views/res_config_views.xml rename to addons/google_calendar/views/base_config_settings_views.xml diff --git a/addons/google_drive/__manifest__.py b/addons/google_drive/__manifest__.py index c41ed3a4f7b..296b46c317c 100644 --- a/addons/google_drive/__manifest__.py +++ b/addons/google_drive/__manifest__.py @@ -12,7 +12,7 @@ 'data/google_drive_data.xml', 'views/google_drive_views.xml', 'views/google_drive_templates.xml', - 'views/res_config_views.xml', + 'views/base_config_settings_views.xml', ], 'demo': [ 'data/google_drive_demo.xml' diff --git a/addons/google_drive/models/__init__.py b/addons/google_drive/models/__init__.py index e0a4cc5dc12..288b7b7fbac 100644 --- a/addons/google_drive/models/__init__.py +++ b/addons/google_drive/models/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from . import base_config_settings from . import google_drive -from . import res_config diff --git a/addons/google_drive/models/res_config.py b/addons/google_drive/models/base_config_settings.py similarity index 59% rename from addons/google_drive/models/res_config.py rename to addons/google_drive/models/base_config_settings.py index fba3f8ec9f1..37c78a218fd 100644 --- a/addons/google_drive/models/res_config.py +++ b/addons/google_drive/models/base_config_settings.py @@ -7,11 +7,7 @@ from odoo import api, fields, models class BaseConfigSettings(models.TransientModel): _inherit = "base.config.settings" - @api.model - def _default_google_drive_authorization_code(self): - return self.env['ir.config_parameter'].sudo().get_param('google_drive_authorization_code') - - google_drive_authorization_code = fields.Char(string='Authorization Code', default=_default_google_drive_authorization_code) + google_drive_authorization_code = fields.Char(string='Authorization Code') google_drive_uri = fields.Char(compute='_compute_drive_uri', string='URI', help="The URL to generate the authorization code from Google") @api.depends('google_drive_authorization_code') @@ -20,14 +16,20 @@ class BaseConfigSettings(models.TransientModel): for config in self: config.google_drive_uri = google_drive_uri - @api.multi - def set_google_authorization_code(self): - self.ensure_one() - ICP = self.env['ir.config_parameter'] + @api.model + def get_values(self): + res = super(BaseConfigSettings, self).get_values() + res.update( + google_drive_authorization_code=self.env['ir.config_parameter'].sudo().get_param('google_drive_authorization_code'), + ) + return res + + def set_values(self): + super(BaseConfigSettings, self).set_values() + params = self.env['ir.config_parameter'].sudo() authorization_code = self.google_drive_authorization_code refresh_token = False - if authorization_code and authorization_code != ICP.get_param('google_drive_authorization_code'): + if authorization_code and authorization_code != params.get_param('google_drive_authorization_code'): refresh_token = self.env['google.service'].generate_refresh_token('drive', authorization_code) - - ICP.set_param('google_drive_authorization_code', authorization_code) - ICP.set_param('google_drive_refresh_token', refresh_token) + params.set_param('google_drive_authorization_code', authorization_code) + params.set_param('google_drive_refresh_token', refresh_token) diff --git a/addons/google_drive/views/res_config_views.xml b/addons/google_drive/views/base_config_settings_views.xml similarity index 100% rename from addons/google_drive/views/res_config_views.xml rename to addons/google_drive/views/base_config_settings_views.xml diff --git a/addons/hr_attendance/__manifest__.py b/addons/hr_attendance/__manifest__.py index cf373096622..bc36a7d4f5d 100644 --- a/addons/hr_attendance/__manifest__.py +++ b/addons/hr_attendance/__manifest__.py @@ -25,7 +25,7 @@ actions(Check in/Check out) performed by them. 'report/hr_employee_badge.xml', 'views/hr_department_view.xml', 'views/hr_employee_view.xml', - 'views/res_config_view.xml', + 'views/attendance_config_settings_views.xml', ], 'demo': [ 'data/hr_attendance_demo.xml' diff --git a/addons/hr_attendance/models/__init__.py b/addons/hr_attendance/models/__init__.py index a94d4f20a38..94f3e8714a7 100644 --- a/addons/hr_attendance/models/__init__.py +++ b/addons/hr_attendance/models/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- +from . import attendance_config_settings from . import hr_attendance from . import hr_employee -from . import res_config diff --git a/addons/hr_attendance/models/res_config.py b/addons/hr_attendance/models/attendance_config_settings.py similarity index 100% rename from addons/hr_attendance/models/res_config.py rename to addons/hr_attendance/models/attendance_config_settings.py diff --git a/addons/hr_attendance/views/res_config_view.xml b/addons/hr_attendance/views/attendance_config_settings_views.xml similarity index 100% rename from addons/hr_attendance/views/res_config_view.xml rename to addons/hr_attendance/views/attendance_config_settings_views.xml diff --git a/addons/hr_expense/__manifest__.py b/addons/hr_expense/__manifest__.py index 114200460a1..17932b55a18 100644 --- a/addons/hr_expense/__manifest__.py +++ b/addons/hr_expense/__manifest__.py @@ -39,7 +39,7 @@ This module also uses analytic accounting and is compatible with the invoice on 'report/report_expense_sheet.xml', 'views/hr_dashboard.xml', 'views/hr_expense.xml', - 'views/res_config_views.xml', + 'views/hr_expense_config_settings_views.xml', 'data/web_planner_data.xml', ], 'demo': ['data/hr_expense_demo.xml'], diff --git a/addons/hr_expense/models/__init__.py b/addons/hr_expense/models/__init__.py index 103a41b283d..aa63806bf9d 100644 --- a/addons/hr_expense/models/__init__.py +++ b/addons/hr_expense/models/__init__.py @@ -4,5 +4,5 @@ from . import account_move_line from . import hr_department from . import hr_expense from . import product_template -from . import res_config +from . import hr_expense_config_settings from . import web_planner diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py index 858c8da8348..bc34395bf75 100644 --- a/addons/hr_expense/models/hr_expense.py +++ b/addons/hr_expense/models/hr_expense.py @@ -309,7 +309,8 @@ class HrExpense(models.Model): @api.model def get_empty_list_help(self, help_message): if help_message: - alias_record = self.env.ref('hr_expense.mail_alias_expense') + use_mailgateway = self.env['ir.config_parameter'].sudo().get_param('hr_expense.use_mailgateway') + alias_record = use_mailgateway and self.env.ref('hr_expense.mail_alias_expense') or False if alias_record and alias_record.alias_domain and alias_record.alias_name: link = "%(email)s" % { 'email': '%s@%s' % (alias_record.alias_name, alias_record.alias_domain) diff --git a/addons/hr_expense/models/hr_expense_config_settings.py b/addons/hr_expense/models/hr_expense_config_settings.py new file mode 100644 index 00000000000..ee7e8b49478 --- /dev/null +++ b/addons/hr_expense/models/hr_expense_config_settings.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- + +from odoo import api, fields, models + + +class HrExpenseConfigSettings(models.TransientModel): + _name = 'hr.expense.config.settings' + _inherit = 'res.config.settings' + + alias_prefix = fields.Char('Default Alias Name for Expenses') + alias_domain = fields.Char('Alias Domain', default=lambda self: self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain")) + group_analytic_accounting = fields.Boolean( + string='Analytic Accounting', + implied_group='analytic.group_analytic_accounting') + group_uom = fields.Boolean( + string="Units of Measure", + implied_group='product.group_uom') + use_mailgateway = fields.Boolean(string='Let your employees record expenses by email') + module_project = fields.Boolean(string="Project") + module_sale = fields.Boolean(string="Customer Billing") + + @api.model + def get_values(self): + res = super(HrExpenseConfigSettings, self).get_values() + res.update( + 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_values(self): + super(HrExpenseConfigSettings, self).set_values() + 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) + + @api.onchange('use_mailgateway') + def _onchange_use_mailgateway(self): + if not self.use_mailgateway: + self.alias_prefix = False diff --git a/addons/hr_expense/models/res_config.py b/addons/hr_expense/models/res_config.py deleted file mode 100644 index dad3deec031..00000000000 --- a/addons/hr_expense/models/res_config.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- - -from odoo import api, fields, models - -class HrExpenseConfigSettings(models.TransientModel): - _name = 'hr.expense.config.settings' - _inherit = 'res.config.settings' - - alias_prefix = fields.Char('Default Alias Name for Expenses') - alias_domain = fields.Char('Alias Domain', default=lambda self: self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain")) - group_analytic_accounting = fields.Boolean(string='Analytic Accounting', - implied_group='analytic.group_analytic_accounting') - group_uom = fields.Boolean("Units of Measure", - implied_group='product.group_uom') - default_alias_email = fields.Boolean(string='Let your employees record expenses by email', default_model='hr.expense.config.settings') - module_project = fields.Boolean(string="Project") - module_sale = fields.Boolean(string="Customer Billing") - - @api.model - def get_default_alias_prefix(self, fields): - alias_name = self.env.ref('hr_expense.mail_alias_expense').alias_name - return {'alias_prefix': alias_name} - - @api.multi - def set_default_alias_prefix(self): - for record in self: - self.env.ref('hr_expense.mail_alias_expense').write({'alias_name': record.alias_prefix}) diff --git a/addons/hr_expense/views/res_config_views.xml b/addons/hr_expense/views/hr_expense_config_settings_views.xml similarity index 95% rename from addons/hr_expense/views/res_config_views.xml rename to addons/hr_expense/views/hr_expense_config_settings_views.xml index bb550bd7caf..19078d6071c 100644 --- a/addons/hr_expense/views/res_config_views.xml +++ b/addons/hr_expense/views/hr_expense_config_settings_views.xml @@ -16,14 +16,14 @@
- +
-