From 4b5513cfd47c4692599a111db800d04ab5f6f62e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Thu, 6 Apr 2017 13:46:43 +0200 Subject: [PATCH 01/27] [REF] crm: use config parameter instead of ir values in settings Fields like `default_foo` still used ir.values although those are system-wide parameters and should therefore be stored in ir.config_parameter table. When no default_model is set on a field, don't prefix it by `default_`. Also, remove deprecated generation of alias on sales team. According to usability experts configuring a sales team alias should be done directly on the sales team view and not through an hidden and strangely configured settings. --- addons/crm/__manifest__.py | 1 - .../crm/data/sales_config_settings_data.xml | 8 --- addons/crm/models/crm_team.py | 7 --- addons/crm/models/res_config.py | 49 ++++++------------- addons/crm/views/res_config_views.xml | 6 +-- 5 files changed, 18 insertions(+), 53 deletions(-) delete mode 100644 addons/crm/data/sales_config_settings_data.xml diff --git a/addons/crm/__manifest__.py b/addons/crm/__manifest__.py index 7781e15184b..4af5476bbbd 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', 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/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 index 0af455f6bdc..2d2324bc29e 100644 --- a/addons/crm/models/res_config.py +++ b/addons/crm/models/res_config.py @@ -7,12 +7,9 @@ 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') + 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)") @@ -29,41 +26,15 @@ class CRMSettings(models.TransientModel): ], 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 + self.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.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_default_alias_prefix(self, fields): @@ -80,3 +51,13 @@ class CRMSettings(models.TransientModel): 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 + + @api.model + def get_default_generate_lead_from_alias(self, fields): + return { + 'generate_lead_from_alias': self.env['ir.config_parameter'].sudo().get_param('crm.generate_lead_from_alias') + } + + @api.multi + def set_generate_lead_from_alias(self): + self.env['ir.config_parameter'].sudo().set_param('crm.generate_lead_from_alias', self.generate_lead_from_alias) diff --git a/addons/crm/views/res_config_views.xml b/addons/crm/views/res_config_views.xml index 0a60a0e6dbf..d6ed8df62df 100644 --- a/addons/crm/views/res_config_views.xml +++ b/addons/crm/views/res_config_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">
- +
-
+
From 76bf5dc83da7b04d76afd61eb3d8430a900eab0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 5 Apr 2017 13:52:41 +0200 Subject: [PATCH 02/27] [REF] hr_expense: fix settings using volatile checkboxes This commit fixes * `default_alias_email` is now called use_mailgateway to better reflect its use. When unchecked the alias_prefix value is set to False in order to reset the alias. * empty list message displays receipts alias only if the mailgateway option is activated * some code cleaning so that get_default_ and set_ methods are put into a sole method in order to lessen code size --- addons/hr_expense/models/hr_expense.py | 3 ++- addons/hr_expense/models/res_config.py | 28 +++++++++++++------- addons/hr_expense/views/res_config_views.xml | 8 +++--- 3 files changed, 25 insertions(+), 14 deletions(-) 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/res_config.py b/addons/hr_expense/models/res_config.py index dad3deec031..21da58f7acc 100644 --- a/addons/hr_expense/models/res_config.py +++ b/addons/hr_expense/models/res_config.py @@ -2,26 +2,36 @@ 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', + group_analytic_accounting = fields.Boolean( + string='Analytic Accounting', implied_group='analytic.group_analytic_accounting') - group_uom = fields.Boolean("Units of Measure", + group_uom = fields.Boolean( + string="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') + 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_default_alias_prefix(self, fields): - alias_name = self.env.ref('hr_expense.mail_alias_expense').alias_name - return {'alias_prefix': alias_name} + def get_default_fields(self, fields): + return 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'), + ) @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}) + def set_fields(self): + 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/views/res_config_views.xml b/addons/hr_expense/views/res_config_views.xml index bb550bd7caf..19078d6071c 100644 --- a/addons/hr_expense/views/res_config_views.xml +++ b/addons/hr_expense/views/res_config_views.xml @@ -16,14 +16,14 @@
- +
-