From 65a7531c8b5c713969e49a5fab9d4672524c3ba8 Mon Sep 17 00:00:00 2001 From: "kujiu (@angua.kujiu.org)" Date: Tue, 27 Dec 2016 17:07:02 +0100 Subject: [PATCH] [IMP] website*: Improve the settings form view --- addons/website/models/res_config.py | 70 ++- addons/website/models/website.py | 2 + addons/website/views/res_config_views.xml | 454 +++++++++++++----- .../website_crm_config_settings_views.xml | 26 +- addons/website_livechat/models/website.py | 2 +- addons/website_livechat/views/res_config.xml | 20 +- addons/website_sale/models/res_config.py | 84 +++- addons/website_sale/views/res_config_view.xml | 340 +++++++++++-- addons/website_sale_delivery/__manifest__.py | 1 + .../views/website_config_settings_views.xml | 17 + addons/website_slides/view/res_config.xml | 28 +- .../models/website_twitter_config.py | 6 +- .../views/website_twitter_settings_views.xml | 119 +++-- 13 files changed, 866 insertions(+), 303 deletions(-) create mode 100644 addons/website_sale_delivery/views/website_config_settings_views.xml diff --git a/addons/website/models/res_config.py b/addons/website/models/res_config.py index 7811f773b95..2716f80c324 100644 --- a/addons/website/models/res_config.py +++ b/addons/website/models/res_config.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import fields, models +from odoo import api, fields, models class WebsiteConfigSettings(models.TransientModel): @@ -14,39 +14,67 @@ class WebsiteConfigSettings(models.TransientModel): website_id = fields.Many2one('website', string="website", default=_default_website, required=True) website_name = fields.Char('Website Name', related='website_id.name') - language_ids = fields.Many2many(related='website_id.language_ids', relation='res.lang') - default_lang_id = fields.Many2one(related='website_id.default_lang_id', relation='res.lang', required=True) + language_count = fields.Integer(string='Number of languages', compute='_compute_language_count', readonly=True) + default_lang_id = fields.Many2one(string='Default language', related='website_id.default_lang_id', relation='res.lang', required=True) default_lang_code = fields.Char('Default language code', related='website_id.default_lang_code') google_analytics_key = fields.Char('Google Analytics Key', related='website_id.google_analytics_key') + google_management_client_id = fields.Char('Google Client ID', related='website_id.google_management_client_id') + google_management_client_secret = fields.Char('Google Client Secret', related='website_id.google_management_client_secret') + + social_twitter = fields.Char("Twitter", related='website_id.social_twitter') + social_facebook = fields.Char("Facebook", related='website_id.social_facebook') + social_github = fields.Char("GitHub", related='website_id.social_github') + social_linkedin = fields.Char("LinkedIn", related='website_id.social_linkedin') + social_youtube = fields.Char("Youtube", related='website_id.social_youtube') + social_googleplus = fields.Char("Google+", related='website_id.social_googleplus') - social_twitter = fields.Char(related='website_id.social_twitter') - social_facebook = fields.Char(related='website_id.social_facebook') - social_github = fields.Char(related='website_id.social_github') - social_linkedin = fields.Char(related='website_id.social_linkedin') - social_youtube = fields.Char(related='website_id.social_youtube') - social_googleplus = fields.Char(related='website_id.social_googleplus') cdn_activated = fields.Boolean('Use a Content Delivery Network (CDN)', related='website_id.cdn_activated') cdn_url = fields.Char(related='website_id.cdn_url') cdn_filters = fields.Text(related='website_id.cdn_filters') - module_website_form_editor = fields.Selection([ - (0, 'Use standard forms'), - (1, 'Create and customize forms to generate emails, leads, issues and extra information in the checkout process (new snippet available)') - ], "Form Builder") - module_website_version = fields.Selection([ - (0, 'No version management and A/B testing (easy)'), - (1, 'Allow multiple versions of the same page (advanced)') - ], "A/B Testing") - favicon = fields.Binary('Favicon', related='website_id.favicon') + module_website_form_editor = fields.Boolean("Custom Forms") + module_website_version = fields.Boolean("A/B Testing") + module_website_twitter = fields.Boolean("Twitter Roller") + module_website_blog = fields.Boolean("Blogs") + module_website_livechat = fields.Boolean("Live Chat") + module_website_forum = fields.Boolean("Forum") + module_website_crm = fields.Boolean("Contact Form") + module_website_slides = fields.Boolean("Slides") + module_website_hr_recruitment = fields.Boolean("Jobs") + module_website_sale = fields.Boolean("eCommerce") + module_website_contract = fields.Boolean("Subscriptions") + module_website_event_sale = fields.Boolean("Event Tickets") + + favicon = fields.Binary('Favicon', related='website_id.favicon') # Set as global config parameter since methods using it are not website-aware. To be changed # when multi-website is implemented google_maps_api_key = fields.Char(string='Google Maps API Key') + has_google_analytics = fields.Boolean("Google Analytics") + has_google_analytics_dashboard = fields.Boolean("Google Analytics in Dashboard") + has_google_maps = fields.Boolean("Google Maps") + + def get_default_google_maps_api_key(self, fields): + google_maps_api_key = self.env['ir.config_parameter'].get_param('google_maps_api_key', default='') + return dict(google_maps_api_key=google_maps_api_key) def set_google_maps_api_key(self): self.env['ir.config_parameter'].set_param( 'google_maps_api_key', (self.google_maps_api_key or '').strip(), groups=['base.group_system']) - def get_default_google_maps_api_key(self, fields): - google_maps_api_key = self.env['ir.config_parameter'].get_param('google_maps_api_key', default='') - return dict(google_maps_api_key=google_maps_api_key) + @api.depends('language_ids') + def _compute_language_count(self): + for config in self: + config.language_count = len(self.language_ids) + + def set_has_google_analytics(self): + return self.env['ir.values'].set_default( + 'website.config.settings', 'has_google_analytics', self.has_google_analytics) + + def set_has_google_analytics_dashboard(self): + return self.env['ir.values'].set_default( + 'website.config.settings', 'has_google_analytics_dashboard', self.has_google_analytics_dashboard) + + def set_has_google_maps(self): + return self.env['ir.values'].set_default( + 'website.config.settings', 'has_google_maps', self.has_google_maps) diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 8739ba2fa07..d76beda063d 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -174,6 +174,8 @@ class Website(models.Model): social_youtube = fields.Char('Youtube Account') social_googleplus = fields.Char('Google+ Account') google_analytics_key = fields.Char('Google Analytics Key') + google_management_client_id = fields.Char('Google Client ID') + google_management_client_secret = fields.Char('Google Client Secret') user_id = fields.Many2one('res.users', string='Public User', default=lambda self: self.env.ref('base.public_user').id) compress_html = fields.Boolean('Compress HTML') # TODO: REMOVE ME IN SAAS-14 diff --git a/addons/website/views/res_config_views.xml b/addons/website/views/res_config_views.xml index 04275c69ec6..65dea570bb1 100644 --- a/addons/website/views/res_config_views.xml +++ b/addons/website/views/res_config_views.xml @@ -2,139 +2,353 @@ - - Website settings + + website.config.settings.form website.config.settings
-
-
- - - -