diff --git a/addons/crm/models/res_config_settings.py b/addons/crm/models/res_config_settings.py index 704a6e96b1c..c384203ec2b 100644 --- a/addons/crm/models/res_config_settings.py +++ b/addons/crm/models/res_config_settings.py @@ -130,11 +130,11 @@ class ResConfigSettings(models.TransientModel): setting.predictive_lead_scoring_field_labels = _('Stage') def set_values(self): - group_use_lead = self.env.ref('crm.group_use_lead') - has_group_lead_before = group_use_lead in self.env.user.groups_id + group_use_lead_id = self.env['ir.model.data']._xmlid_to_res_id('crm.group_use_lead') + has_group_lead_before = group_use_lead_id in self.env.user.groups_id.ids super(ResConfigSettings, self).set_values() # update use leads / opportunities setting on all teams according to settings update - has_group_lead_after = group_use_lead in self.env.user.groups_id + has_group_lead_after = group_use_lead_id in self.env.user.groups_id.ids if has_group_lead_before != has_group_lead_after: teams = self.env['crm.team'].search([]) teams.filtered('use_opportunities').use_leads = has_group_lead_after diff --git a/addons/website/models/res_config_settings.py b/addons/website/models/res_config_settings.py index 512ca36b9ba..9f333c9a123 100644 --- a/addons/website/models/res_config_settings.py +++ b/addons/website/models/res_config_settings.py @@ -13,116 +13,173 @@ class ResConfigSettings(models.TransientModel): def _default_website(self): return self.env['website'].search([('company_id', '=', self.env.company.id)], limit=1) - website_id = fields.Many2one('website', string="website", - default=_default_website, ondelete='cascade') - website_name = fields.Char('Website Name', related='website_id.name', readonly=False) - website_domain = fields.Char('Website Domain', related='website_id.domain', readonly=False) - website_country_group_ids = fields.Many2many(related='website_id.country_group_ids', readonly=False) - website_company_id = fields.Many2one(related='website_id.company_id', string='Website Company', readonly=False) - website_logo = fields.Binary(related='website_id.logo', readonly=False) - language_ids = fields.Many2many(related='website_id.language_ids', relation='res.lang', readonly=False) - website_language_count = fields.Integer(string='Number of languages', compute='_compute_website_language_count', readonly=True) - website_default_lang_id = fields.Many2one(string='Default language', related='website_id.default_lang_id', readonly=False) - website_default_lang_code = fields.Char('Default language code', related='website_id.default_lang_id.code', readonly=False) - specific_user_account = fields.Boolean(related='website_id.specific_user_account', readonly=False, - help='Are newly created user accounts website specific') - website_cookies_bar = fields.Boolean(related='website_id.cookies_bar', readonly=False) + website_id = fields.Many2one( + 'website', + string="website", + default=_default_website, ondelete='cascade') + website_name = fields.Char( + 'Website Name', + related='website_id.name', + readonly=False) + website_domain = fields.Char( + 'Website Domain', + related='website_id.domain', + readonly=False) + website_country_group_ids = fields.Many2many( + related='website_id.country_group_ids', + readonly=False) + website_company_id = fields.Many2one( + related='website_id.company_id', + string='Website Company', + readonly=False) + website_logo = fields.Binary( + related='website_id.logo', + readonly=False) + language_ids = fields.Many2many( + related='website_id.language_ids', + relation='res.lang', + readonly=False) + website_language_count = fields.Integer( + string='Number of languages', + compute='_compute_website_language_count', + readonly=True) + website_default_lang_id = fields.Many2one( + string='Default language', + related='website_id.default_lang_id', + readonly=False) + website_default_lang_code = fields.Char( + 'Default language code', + related='website_id.default_lang_id.code', + readonly=False) + shared_user_account = fields.Boolean( + string="Shared Customer Accounts", + compute='_compute_shared_user_account', + inverse='_inverse_shared_user_account') + website_cookies_bar = fields.Boolean( + related='website_id.cookies_bar', + readonly=False) + google_analytics_key = fields.Char( + 'Google Analytics Key', + related='website_id.google_analytics_key', + readonly=False) + google_management_client_id = fields.Char( + 'Google Client ID', + related='website_id.google_management_client_id', + readonly=False) + google_management_client_secret = fields.Char( + 'Google Client Secret', + related='website_id.google_management_client_secret', + readonly=False) + google_search_console = fields.Char( + 'Google Search Console', + related='website_id.google_search_console', + readonly=False) - google_analytics_key = fields.Char('Google Analytics Key', related='website_id.google_analytics_key', readonly=False) - google_management_client_id = fields.Char('Google Client ID', related='website_id.google_management_client_id', readonly=False) - google_management_client_secret = fields.Char('Google Client Secret', related='website_id.google_management_client_secret', readonly=False) - google_search_console = fields.Char('Google Search Console', related='website_id.google_search_console', readonly=False) + cdn_activated = fields.Boolean( + related='website_id.cdn_activated', + readonly=False) + cdn_url = fields.Char( + related='website_id.cdn_url', + readonly=False) + cdn_filters = fields.Text( + related='website_id.cdn_filters', + readonly=False) + auth_signup_uninvited = fields.Selection( + compute="_compute_auth_signup_uninvited", + inverse="_inverse_auth_signup_uninvited") - cdn_activated = fields.Boolean(related='website_id.cdn_activated', readonly=False) - cdn_url = fields.Char(related='website_id.cdn_url', readonly=False) - cdn_filters = fields.Text(related='website_id.cdn_filters', readonly=False) - auth_signup_uninvited = fields.Selection(compute="_compute_auth_signup", inverse="_set_auth_signup") + favicon = fields.Binary( + 'Favicon', + related='website_id.favicon', + readonly=False) + social_default_image = fields.Binary( + 'Default Social Share Image', + related='website_id.social_default_image', + readonly=False) - social_twitter = fields.Char(related='website_id.social_twitter', readonly=False) - social_facebook = fields.Char(related='website_id.social_facebook', readonly=False) - social_github = fields.Char(related='website_id.social_github', readonly=False) - social_linkedin = fields.Char(related='website_id.social_linkedin', readonly=False) - social_youtube = fields.Char(related='website_id.social_youtube', readonly=False) - social_instagram = fields.Char(related='website_id.social_instagram', readonly=False) + group_multi_website = fields.Boolean( + "Multi-website", + implied_group="website.group_multi_website") + has_google_analytics = fields.Boolean( + "Google Analytics", + compute='_compute_has_google_analytics', + inverse='_inverse_has_google_analytics') + has_google_analytics_dashboard = fields.Boolean( + "Google Analytics Dashboard", + compute='_compute_has_google_analytics_dashboard', + inverse='_inverse_has_google_analytics_dashboard') + has_google_search_console = fields.Boolean( + "Console Google Search", + compute='_compute_has_google_search_console', + inverse='_inverse_has_google_search_console') + has_default_share_image = fields.Boolean( + "Use a image by default for sharing", + compute='_compute_has_default_share_image', + inverse='_inverse_has_default_share_image') + module_website_livechat = fields.Boolean() + module_marketing_automation = fields.Boolean() - @api.depends('website_id', 'social_twitter', 'social_facebook', 'social_github', 'social_linkedin', 'social_youtube', 'social_instagram') - def has_social_network(self): - self.has_social_network = self.social_twitter or self.social_facebook or self.social_github \ - or self.social_linkedin or self.social_youtube or self.social_instagram + @api.depends('website_id') + def _compute_shared_user_account(self): + for config in self: + config.shared_user_account = not config.website_id.specific_user_account - def inverse_has_social_network(self): - if not self.has_social_network: - self.social_twitter = '' - self.social_facebook = '' - self.social_github = '' - self.social_linkedin = '' - self.social_youtube = '' - self.social_instagram = '' + def _inverse_shared_user_account(self): + for config in self: + config.website_id.specific_user_account = not config.shared_user_account - has_social_network = fields.Boolean("Configure Social Network", compute=has_social_network, inverse=inverse_has_social_network) - - favicon = fields.Binary('Favicon', related='website_id.favicon', readonly=False) - social_default_image = fields.Binary('Default Social Share Image', related='website_id.social_default_image', readonly=False) - - google_maps_api_key = fields.Char(related='website_id.google_maps_api_key', readonly=False) - group_multi_website = fields.Boolean("Multi-website", implied_group="website.group_multi_website") - - @api.onchange('website_id') @api.depends('website_id.auth_signup_uninvited') - def _compute_auth_signup(self): - self.auth_signup_uninvited = self.website_id.auth_signup_uninvited + def _compute_auth_signup_uninvited(self): + for config in self: + config.auth_signup_uninvited = config.website_id.auth_signup_uninvited - def _set_auth_signup(self): + def _inverse_auth_signup_uninvited(self): for config in self: config.website_id.auth_signup_uninvited = config.auth_signup_uninvited @api.depends('website_id') - def has_google_analytics(self): - self.has_google_analytics = bool(self.google_analytics_key) + def _compute_has_google_analytics(self): + for config in self: + config.has_google_analytics = bool(config.google_analytics_key) + + def _inverse_has_google_analytics(self): + for config in self: + if config.has_google_analytics: + continue + config.has_google_analytics_dashboard = False + config.google_analytics_key = False @api.depends('website_id') - def has_google_analytics_dashboard(self): - self.has_google_analytics_dashboard = bool(self.google_management_client_id) + def _compute_has_google_analytics_dashboard(self): + for config in self: + config.has_google_analytics_dashboard = bool(config.google_management_client_id) + + def _inverse_has_google_analytics_dashboard(self): + for config in self: + if config.has_google_analytics_dashboard: + continue + config.google_management_client_id = False + config.google_management_client_secret = False @api.depends('website_id') - def has_google_maps(self): - self.has_google_maps = bool(self.google_maps_api_key) + def _compute_has_google_search_console(self): + for config in self: + config.has_google_search_console = bool(config.google_search_console) + + def _inverse_has_google_search_console(self): + for config in self: + if not config.has_google_search_console: + config.google_search_console = False @api.depends('website_id') - def has_default_share_image(self): - self.has_default_share_image = bool(self.social_default_image) + def _compute_has_default_share_image(self): + for config in self: + config.has_default_share_image = bool(config.social_default_image) - @api.depends('website_id') - def has_google_search_console(self): - self.has_google_search_console = bool(self.google_search_console) - - def inverse_has_google_analytics(self): - if not self.has_google_analytics: - self.has_google_analytics_dashboard = False - self.google_analytics_key = False - - def inverse_has_google_maps(self): - if not self.has_google_maps: - self.google_maps_api_key = False - - def inverse_has_google_analytics_dashboard(self): - if not self.has_google_analytics_dashboard: - self.google_management_client_id = False - self.google_management_client_secret = False - - def inverse_has_google_search_console(self): - if not self.has_google_search_console: - self.google_search_console = False - - def inverse_has_default_share_image(self): - if not self.has_default_share_image: - self.social_default_image = False - - has_google_analytics = fields.Boolean("Google Analytics", compute=has_google_analytics, inverse=inverse_has_google_analytics) - has_google_analytics_dashboard = fields.Boolean("Google Analytics Dashboard", compute=has_google_analytics_dashboard, inverse=inverse_has_google_analytics_dashboard) - has_google_maps = fields.Boolean("Google Maps", compute=has_google_maps, inverse=inverse_has_google_maps) - has_google_search_console = fields.Boolean("Console Google Search", compute=has_google_search_console, inverse=inverse_has_google_search_console) - has_default_share_image = fields.Boolean("Use a image by default for sharing", compute=has_default_share_image, inverse=inverse_has_default_share_image) + def _inverse_has_default_share_image(self): + for config in self: + if not config.has_default_share_image: + config.social_default_image = False @api.onchange('language_ids') def _onchange_language_ids(self): @@ -139,20 +196,6 @@ class ResConfigSettings(models.TransientModel): for config in self: config.website_language_count = len(config.language_ids) - def open_template_user(self): - action = self.env["ir.actions.actions"]._for_xml_id("base.action_res_users") - action['res_id'] = literal_eval(self.env['ir.config_parameter'].sudo().get_param('base.template_portal_user_id', 'False')) - action['views'] = [[self.env.ref('base.view_users_form').id, 'form']] - return action - - def website_go_to(self): - self.website_id._force() - return { - 'type': 'ir.actions.act_url', - 'url': '/', - 'target': 'self', - } - def action_website_create_new(self): return { 'view_mode': 'form', @@ -183,9 +226,3 @@ class ResConfigSettings(models.TransientModel): 'url': 'http://www.google.com/ping?sitemap=%s/sitemap.xml' % self.website_id.domain, 'target': 'new', } - - def install_theme_on_current_website(self): - self.website_id._force() - action = self.env["ir.actions.actions"]._for_xml_id("website.theme_install_kanban_action") - action['target'] = 'main' - return action diff --git a/addons/website/static/src/js/backend/res_config_settings.js b/addons/website/static/src/js/backend/res_config_settings.js index 6dd014c05a6..776e0995a34 100644 --- a/addons/website/static/src/js/backend/res_config_settings.js +++ b/addons/website/static/src/js/backend/res_config_settings.js @@ -37,10 +37,8 @@ BaseSettingController.include({ * @override */ _onButtonClicked: function (ev) { - if (ev.data.attrs.name === 'website_go_to' - || ev.data.attrs.name === 'action_open_robots' - || ev.data.attrs.name === 'action_ping_sitemap' - || ev.data.attrs.name === 'install_theme_on_current_website') { + if (ev.data.attrs.name === 'action_open_robots' + || ev.data.attrs.name === 'action_ping_sitemap') { FormController.prototype._onButtonClicked.apply(this, arguments); } else { this._super.apply(this, arguments); diff --git a/addons/website/views/res_config_settings_views.xml b/addons/website/views/res_config_settings_views.xml index 2f1fda19ccf..72e3c4d54f9 100644 --- a/addons/website/views/res_config_settings_views.xml +++ b/addons/website/views/res_config_settings_views.xml @@ -1,429 +1,311 @@ - - res.config.settings.view.form.inherit.website - res.config.settings - - - - -
-

Select the Website to Configure

-
-
-
-