diff options
| author | Denis Vermylen <dve@odoo.com> | 2017-05-12 18:40:14 +0200 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2017-07-06 12:53:39 +0200 |
| commit | 689d6d68296ea32c2155dc1a61b593754ca3b968 (patch) | |
| tree | ee68328bd9dce61b260d5060279ce979e11049c0 | |
| parent | 5854bb7d12ebae359dc1bef20c966c9f0e8d983e (diff) | |
[IMP] website: add signup option in website settings
This commit duplicates the General settings' User Signup options in
the Website configuration, with a clear description of the options.
We also remove the unnecessary usage of safe_eval in auth_signup's
res_config.py. As stored values are repr values of a boolean field
just comparing the string values is sufficient. There is no need to
use safe_eval as it should be used only when necessary.
4 files changed, 45 insertions, 20 deletions
diff --git a/addons/auth_signup/models/base_config_settings.py b/addons/auth_signup/models/base_config_settings.py index eb830c24e37..8ea0a8f2041 100644 --- a/addons/auth_signup/models/base_config_settings.py +++ b/addons/auth_signup/models/base_config_settings.py @@ -2,24 +2,27 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import api, fields, models -from odoo.tools.safe_eval import safe_eval + class BaseConfigSettings(models.TransientModel): _inherit = 'base.config.settings' auth_signup_reset_password = fields.Boolean(string='Enable password reset from Login page') - auth_signup_uninvited = fields.Boolean(string='Allow external users to sign up') + auth_signup_uninvited = fields.Selection([ + ('b2b', 'On invitation (B2B)'), + ('b2c', 'Free sign up (B2C)'), + ], string='Customer Account') auth_signup_template_user_id = fields.Many2one('res.users', string='Template user for new users created through signup') @api.model 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 + # the value of the parameter is a nonempty string 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')), + auth_signup_reset_password=get_param('auth_signup.reset_password', 'False').lower() == 'true', + auth_signup_uninvited='b2c' if get_param('auth_signup.allow_uninvited', 'False').lower() == 'true' else 'b2b', + auth_signup_template_user_id=get_param('auth_signup.template_user_id', 'False').lower() == 'true', ) return res @@ -29,7 +32,7 @@ class BaseConfigSettings(models.TransientModel): 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)) + set_param('auth_signup.allow_uninvited', repr(self.auth_signup_uninvited == 'b2c')) set_param('auth_signup.template_user_id', repr(self.auth_signup_template_user_id.id)) @api.multi diff --git a/addons/auth_signup/views/base_config_settings_views.xml b/addons/auth_signup/views/base_config_settings_views.xml index 23c2b1f7608..aaae5a8ea22 100644 --- a/addons/auth_signup/views/base_config_settings_views.xml +++ b/addons/auth_signup/views/base_config_settings_views.xml @@ -9,14 +9,16 @@ <xpath expr="//div[@id='access_rights']" position="after"> <div class="col-xs-12 col-md-6 o_setting_box" title="If unchecked, only invited users may sign up."> <div class="o_setting_left_pane"> - <field name="auth_signup_uninvited"/> </div> <div class="o_setting_right_pane"> - <label string="User Signup" for="auth_signup_uninvited"/> + <label for="auth_signup_uninvited"/> <div class="text-muted"> - Allow external users to sign up from Login page + Let your customers log in to see their documents </div> - <div class="content-group" attrs="{'invisible': [('auth_signup_uninvited','=',False)]}"> + <div class="mt8"> + <field name="auth_signup_uninvited" widget="radio" required="True"/> + </div> + <div class="content-group" attrs="{'invisible': [('auth_signup_uninvited','=','b2b')]}"> <div class="mt16"> <button type="object" name="open_template_user" string="Default Access Rights" icon="fa-arrow-right" class="btn-link"/> </div> diff --git a/addons/website/models/website_config_settings.py b/addons/website/models/website_config_settings.py index bc5901cdc47..35e20e77290 100644 --- a/addons/website/models/website_config_settings.py +++ b/addons/website/models/website_config_settings.py @@ -53,6 +53,10 @@ class WebsiteConfigSettings(models.TransientModel): has_google_analytics = fields.Boolean("Google Analytics") has_google_analytics_dashboard = fields.Boolean("Google Analytics in Dashboard") has_google_maps = fields.Boolean("Google Maps") + auth_signup_uninvited = fields.Selection([ + ('b2b', 'On invitation (B2B)'), + ('b2c', 'Free sign up (B2C)'), + ], string='Customer Account') @api.onchange('has_google_analytics') def onchange_has_google_analytics(self): @@ -77,12 +81,13 @@ class WebsiteConfigSettings(models.TransientModel): if not self.user_has_groups('website.group_website_designer'): raise AccessDenied() res = super(WebsiteConfigSettings, self).get_values() - params = self.env['ir.config_parameter'].sudo() + get_param = self.env['ir.config_parameter'].sudo().get_param res.update( - has_google_analytics=params.get_param('website.has_google_analytics'), - has_google_analytics_dashboard=params.get_param('website.has_google_analytics_dashboard'), - has_google_maps=params.get_param('website.has_google_maps'), - google_maps_api_key=params.get_param('google_maps_api_key', default=''), + auth_signup_uninvited='b2c' if get_param('auth_signup.allow_uninvited', 'False').lower() == 'true' else 'b2b', + has_google_analytics=get_param('website.has_google_analytics'), + has_google_analytics_dashboard=get_param('website.has_google_analytics_dashboard'), + has_google_maps=get_param('website.has_google_maps'), + google_maps_api_key=get_param('google_maps_api_key', default=''), ) return res @@ -90,7 +95,9 @@ class WebsiteConfigSettings(models.TransientModel): if not self.user_has_groups('website.group_website_designer'): raise AccessDenied() super(WebsiteConfigSettings, self).set_values() - 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) - self.env['ir.config_parameter'].sudo().set_param('google_maps_api_key', (self.google_maps_api_key or '').strip()) + set_param = self.env['ir.config_parameter'].sudo().set_param + set_param('auth_signup.allow_uninvited', repr(self.auth_signup_uninvited == 'b2c')) + set_param('website.has_google_analytics', self.has_google_analytics) + set_param('website.has_google_analytics_dashboard', self.has_google_analytics_dashboard) + set_param('website.has_google_maps', self.has_google_maps) + set_param('google_maps_api_key', (self.google_maps_api_key or '').strip()) diff --git a/addons/website/views/website_config_settings_views.xml b/addons/website/views/website_config_settings_views.xml index 32f0a61e2d9..fe04057717b 100644 --- a/addons/website/views/website_config_settings_views.xml +++ b/addons/website/views/website_config_settings_views.xml @@ -147,6 +147,19 @@ </div> </div> </div> + <div class="col-xs-12 col-md-6 o_setting_box"> + <div class="o_setting_left_pane"> + </div> + <div class="o_setting_right_pane"> + <label for="auth_signup_uninvited"/> + <div class="text-muted"> + Let your customers log in to see their documents + </div> + <div class="mt8"> + <field name="auth_signup_uninvited" widget="radio" required="True"/> + </div> + </div> + </div> </div> <h2>Social Media</h2> |
