diff --git a/base_user_role_profile/__init__.py b/base_user_role_profile/__init__.py index 0650744f..cc6b6354 100644 --- a/base_user_role_profile/__init__.py +++ b/base_user_role_profile/__init__.py @@ -1 +1,2 @@ from . import models +from .hooks import post_init_hook diff --git a/base_user_role_profile/__manifest__.py b/base_user_role_profile/__manifest__.py index 57da305f..22a34689 100644 --- a/base_user_role_profile/__manifest__.py +++ b/base_user_role_profile/__manifest__.py @@ -2,12 +2,13 @@ { "name": "User profiles", - "version": "12.0.1.0.0", + "version": "14.0.1.0.0", "category": "Tools", "author": "Akretion, Odoo Community Association (OCA)", "license": "AGPL-3", "website": "https://github.com/OCA/server-backend", "depends": ["base_user_role", "web"], + "post_init_hook": "post_init_hook", "data": [ "data/data.xml", "security/ir.model.access.csv", diff --git a/base_user_role_profile/hooks.py b/base_user_role_profile/hooks.py new file mode 100644 index 00000000..f6b145f2 --- /dev/null +++ b/base_user_role_profile/hooks.py @@ -0,0 +1,12 @@ +# Copyright 2020 Akretion (https://www.akretion.com). +# @author Pierrick Brun +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import SUPERUSER_ID, api + + +def post_init_hook(cr, registry): + env = api.Environment(cr, SUPERUSER_ID, {}) + env["res.users"].search([("profile_id", "=", False)]).profile_id = env.ref( + "base_user_role_profile.default_profile" + ) diff --git a/base_user_role_profile/models/user.py b/base_user_role_profile/models/user.py index fb8719b9..5cf87961 100644 --- a/base_user_role_profile/models/user.py +++ b/base_user_role_profile/models/user.py @@ -6,12 +6,14 @@ class ResUsers(models.Model): _inherit = "res.users" def _get_default_profile(self): - return self.env.ref("base_user_role_profile.default_profile") + return self.env.ref( + "base_user_role_profile.default_profile", raise_if_not_found=False + ) profile_id = fields.Many2one( "res.users.profile", "Current profile", - default=lambda self: self._get_default_profile, + default=lambda self: self._get_default_profile(), ) profile_ids = fields.Many2many( @@ -53,15 +55,15 @@ class ResUsers(models.Model): self.sudo()._compute_profile_ids() return res - def _get_applicable_roles(self): - res = super()._get_applicable_roles() + def _get_enabled_roles(self): + res = super()._get_enabled_roles() res = res.filtered( lambda r: not r.profile_id or (r.profile_id.id == r.user_id.profile_id.id) ) return res def _update_profile_id(self): - default_profile = self.env.ref("base_user_role_profile.default_profile") + default_profile = self._get_default_profile() if not self.profile_ids: if self.profile_id != default_profile: self.profile_id = default_profile diff --git a/base_user_role_profile/views/profile.xml b/base_user_role_profile/views/profile.xml index e093fa79..846faba7 100644 --- a/base_user_role_profile/views/profile.xml +++ b/base_user_role_profile/views/profile.xml @@ -31,7 +31,6 @@ User Profiles ir.actions.act_window res.users.profile - form