From 90dec44a286c69f31b3fbcf3302f16fdf90d4a5d Mon Sep 17 00:00:00 2001 From: Romain Derie Date: Tue, 21 May 2019 10:01:58 +0000 Subject: [PATCH] [FIX] website: restore the add of website_id on user at signup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since b5a12b4aac the website_id was not set anymore. Indeed, before this commit website_id was the field from the inherits, thus when writing on website_id from res.user, we would write on the partner field. But with b5a12b4aac the website_id was explicitely overrided on res.users as a related to res.partner (its inherits) with readonly=True. Thus, writting website_id on res.users was not working anymore. closes odoo/odoo#33521 Signed-off-by: Jérémy Kersten (jke) --- addons/website/models/res_users.py | 9 ++++----- addons/website/tests/test_get_current_website.py | 7 +++++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/addons/website/models/res_users.py b/addons/website/models/res_users.py index a84eaaeb3c6..8902e4c34b6 100644 --- a/addons/website/models/res_users.py +++ b/addons/website/models/res_users.py @@ -2,8 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. import logging -from odoo import api, fields, models, tools, _ -from odoo.exceptions import ValidationError +from odoo import api, fields, models, tools from odoo.http import request _logger = logging.getLogger(__name__) @@ -12,8 +11,8 @@ _logger = logging.getLogger(__name__) class ResUsers(models.Model): _inherit = 'res.users' - website_id = fields.Many2one('website', related='partner_id.website_id', store=True, related_sudo=False, readonly=True) - + website_id = fields.Many2one('website', related='partner_id.website_id', store=True, related_sudo=False, readonly=False) + _sql_constraints = [ # Partial constraint, complemented by unique index (see below). Still # useful to keep because it provides a proper error message when a @@ -51,7 +50,7 @@ class ResUsers(models.Model): @api.model_cr_context def _auto_init(self): result = super(ResUsers, self)._auto_init() - # Use unique index to implement unique constraint per website, even if website_id is null + # Use unique index to implement unique constraint per website, even if website_id is null # (not possible using a constraint) tools.create_unique_index(self._cr, 'res_users_login_key_unique_website_index', self._table, ['login', 'COALESCE(website_id,-1)']) diff --git a/addons/website/tests/test_get_current_website.py b/addons/website/tests/test_get_current_website.py index a71126cb484..57d85887b4d 100644 --- a/addons/website/tests/test_get_current_website.py +++ b/addons/website/tests/test_get_current_website.py @@ -112,3 +112,10 @@ class TestGetCurrentWebsite(TransactionCase): self.assertEqual(Website._get_current_website_id('site-1.com:81', False), website2.id) self.assertEqual(Website._get_current_website_id('site-1.com:82', False), website1.id) self.assertEqual(Website._get_current_website_id('site-1.com', False), website1.id) + + def test_02_signup_user_website_id(self): + website = self.env['website'].browse(1) + website.specific_user_account = True + + user = self.env['res.users'].create({'website_id': website.id, 'login': 'sad@mail.com', 'name': 'Hope Fully'}) + self.assertTrue(user.website_id == user.partner_id.website_id == website)