diff --git a/addons/auth_signup/controllers/main.py b/addons/auth_signup/controllers/main.py
index 6a3f055ecf7..cffc8f00fd5 100644
--- a/addons/auth_signup/controllers/main.py
+++ b/addons/auth_signup/controllers/main.py
@@ -95,7 +95,7 @@ class AuthSignupHome(Home):
get_param = request.env['ir.config_parameter'].sudo().get_param
return {
- 'signup_enabled': get_param('auth_signup.invitation_scope', 'b2b') == 'b2c',
+ 'signup_enabled': request.env['res.users']._get_signup_invitation_scope() == 'b2c',
'reset_password_enabled': get_param('auth_signup.reset_password') == 'True',
}
diff --git a/addons/auth_signup/models/res_partner.py b/addons/auth_signup/models/res_partner.py
index c0da1d85f83..d8dc57490dd 100644
--- a/addons/auth_signup/models/res_partner.py
+++ b/addons/auth_signup/models/res_partner.py
@@ -105,7 +105,7 @@ class ResPartner(models.Model):
"""
res = defaultdict(dict)
- allow_signup = self.env['ir.config_parameter'].sudo().get_param('auth_signup.invitation_scope', 'b2b') == 'b2c'
+ allow_signup = self.env['res.users']._get_signup_invitation_scope() == 'b2c'
for partner in self:
if allow_signup and not partner.user_ids:
partner = partner.sudo()
diff --git a/addons/auth_signup/models/res_users.py b/addons/auth_signup/models/res_users.py
index fdc2a66b1ee..a7a5e187092 100644
--- a/addons/auth_signup/models/res_users.py
+++ b/addons/auth_signup/models/res_users.py
@@ -103,13 +103,17 @@ class ResUsers(models.Model):
return (self.env.cr.dbname, values.get('login'), values.get('password'))
+ @api.model
+ def _get_signup_invitation_scope(self):
+ return self.env['ir.config_parameter'].sudo().get_param('auth_signup.invitation_scope', 'b2b')
+
@api.model
def _signup_create_user(self, values):
""" signup a new user using the template user """
# check that uninvited users may sign up
if 'partner_id' not in values:
- if self.env['ir.config_parameter'].sudo().get_param('auth_signup.invitation_scope', 'b2b') != 'b2c':
+ if self._get_signup_invitation_scope() != 'b2c':
raise SignupError(_('Signup is not allowed for uninvited users'))
return self._create_user_from_template(values)
diff --git a/addons/website/__manifest__.py b/addons/website/__manifest__.py
index 08c1d8a67a9..463ec49af7c 100644
--- a/addons/website/__manifest__.py
+++ b/addons/website/__manifest__.py
@@ -27,7 +27,9 @@
'views/website_views.xml',
'views/res_config_settings_views.xml',
'views/ir_actions_views.xml',
+ 'views/ir_attachment_views.xml',
'views/res_users_views.xml',
+ 'views/res_partner_views.xml',
'wizard/base_language_install_views.xml',
],
'demo': [
diff --git a/addons/website/controllers/backend.py b/addons/website/controllers/backend.py
index e5a2ecfa87e..9932843ff3a 100644
--- a/addons/website/controllers/backend.py
+++ b/addons/website/controllers/backend.py
@@ -8,7 +8,7 @@ from odoo.http import request
class WebsiteBackend(http.Controller):
@http.route('/website/fetch_dashboard_data', type="json", auth='user')
- def fetch_dashboard_data(self, date_from, date_to):
+ def fetch_dashboard_data(self, website_id, date_from, date_to):
has_group_system = request.env.user.has_group('base.group_system')
has_group_designer = request.env.user.has_group('website.group_website_designer')
dashboard_data = {
@@ -21,6 +21,13 @@ class WebsiteBackend(http.Controller):
'visits': {},
}
}
+
+ current_website = request.env['website'].browse(website_id) if website_id else request.env['website'].get_current_website()
+ dashboard_data['websites'] = request.env['website'].search_read([], ['id', 'name'])
+ for website in dashboard_data['websites']:
+ if website['id'] == current_website.id:
+ website['selected'] = True
+
if has_group_designer:
config = request.env['res.config.settings'].sudo().create({})
if config.has_google_analytics_dashboard:
diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py
index 5689b37352c..5287d480d71 100644
--- a/addons/website/controllers/main.py
+++ b/addons/website/controllers/main.py
@@ -81,6 +81,11 @@ class Website(Home):
raise request.not_found()
+ @http.route('/website/set_session_website', type='json', auth="user")
+ def set_session_website(self, website_id):
+ request.env['website'].browse(int(website_id) if website_id else False)._fix_to_session()
+ return True
+
#------------------------------------------------------
# Login - overwrite of the web login so that regular users are redirected to the backend
# while portal users are redirected to the frontend by default
@@ -221,7 +226,7 @@ class Website(Home):
# default sortby order
sort_order = searchbar_sortings.get(sortby, 'name')['order']
- domain = ['|', ('website_ids', 'in', request.website.id), ('website_ids', '=', False)]
+ domain = ['|', ('website_id', '=', False), ('website_id', '=', request.website.id)]
if search:
domain += ['|', ('name', 'ilike', search), ('url', 'ilike', search)]
@@ -236,6 +241,9 @@ class Website(Home):
)
pages = Page.search(domain, order=sort_order, limit=50, offset=pager['offset'])
+ # only include pages if they are the most specific one available
+ pages = pages.filtered(pages._is_most_specific_page)
+
values = {
'pager': pager,
'pages': pages,
diff --git a/addons/website/data/website_data.xml b/addons/website/data/website_data.xml
index cc82e1d40ee..2c5c131f5e7 100644
--- a/addons/website/data/website_data.xml
+++ b/addons/website/data/website_data.xml
@@ -11,7 +11,6 @@
Top Menu
-
@@ -579,4 +576,9 @@
/website/static/src/img/snippets_demo/s_team_member_4.png
+
+
+ Multi-website
+
+
diff --git a/addons/website/data/website_demo.xml b/addons/website/data/website_demo.xml
index 6c1be81c3aa..71e88ddd582 100644
--- a/addons/website/data/website_demo.xml
+++ b/addons/website/data/website_demo.xml
@@ -131,53 +131,6 @@ response = request.render("website.template_partner_comment", {
0.0.0.0
-
- Home
- qweb
- website2.homepage
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Homepage 0.0.0.0
-
Click to customize this text
-
- Contact us
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- True
- /
-
-
-
-
Contact Us
qweb
@@ -216,29 +169,16 @@ response = request.render("website.template_partner_comment", {
True
/contactus
-
+
-
-
-
- Top Menu
-
-
-