Skip to content

Commit 0f99eb0

Browse files
committed
Merge PR OCA#319 into 16.0
Signed-off-by dreispt
2 parents cc9a2ce + 0c9e204 commit 0f99eb0

File tree

2 files changed

+59
-9
lines changed

2 files changed

+59
-9
lines changed

base_user_role/models/user.py

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,21 @@ def _default_role_lines(self):
3434
default_user = self.env.ref("base.default_user", raise_if_not_found=False)
3535
default_values = []
3636
if default_user:
37-
for role_line in default_user.with_context(active_test=False).role_line_ids:
38-
default_values.append(
39-
{
40-
"role_id": role_line.role_id.id,
41-
"date_from": role_line.date_from,
42-
"date_to": role_line.date_to,
43-
"is_enabled": role_line.is_enabled,
44-
}
45-
)
37+
default_values = default_user._get_role_lines_vals_from_user()
38+
return default_values
39+
40+
def _get_role_lines_vals_from_user(self):
41+
self.ensure_one()
42+
default_values = []
43+
for role_line in self.with_context(active_test=False).role_line_ids:
44+
default_values.append(
45+
{
46+
"role_id": role_line.role_id.id,
47+
"date_from": role_line.date_from,
48+
"date_to": role_line.date_to,
49+
"is_enabled": role_line.is_enabled,
50+
}
51+
)
4652
return default_values
4753

4854
@api.depends("role_line_ids.role_id")
@@ -97,3 +103,15 @@ def set_groups_from_roles(self, force=False):
97103
vals = {"groups_id": groups}
98104
super(ResUsers, user).write(vals)
99105
return True
106+
107+
def copy(self, default=None):
108+
self.ensure_one()
109+
portal_user = self.env.ref(
110+
"base.template_portal_user_id", raise_if_not_found=False
111+
)
112+
if portal_user and self == portal_user:
113+
default["role_line_ids"] = [
114+
(0, 0, role_vals)
115+
for role_vals in portal_user._get_role_lines_vals_from_user()
116+
]
117+
return super().copy(default=default)

base_user_role/tests/test_user_role.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,3 +274,35 @@ def test_group_groups_into_role(self):
274274
self.assertEqual(new_role.name, "Test Role")
275275
# Check that the role has the correct groups (even if the order is not equal)
276276
self.assertEqual(set(new_role.implied_ids.ids), set(user_group_ids))
277+
278+
def test_role_default_user(self):
279+
"""
280+
Test that portal user has the right role and groups based on the portal
281+
template.
282+
"""
283+
self.default_user.write(
284+
{
285+
"role_line_ids": [
286+
(0, 0, {"role_id": self.role1_id.id}),
287+
(0, 0, {"role_id": self.role2_id.id}),
288+
]
289+
}
290+
)
291+
292+
portal_template = self.env.ref("base.template_portal_user_id")
293+
portal_group = self.env.ref("base.group_portal")
294+
vals = {
295+
"name": "Portal Role",
296+
"implied_ids": [(6, 0, [portal_group.id])],
297+
}
298+
portal_role = self.role_model.create(vals)
299+
portal_template.write({"role_line_ids": [(0, 0, {"role_id": portal_role.id})]})
300+
portal_user = portal_template.copy(
301+
{
302+
"name": "New portal user",
303+
"active": True,
304+
}
305+
)
306+
portal_user = portal_user.with_context(active_test=False)
307+
self.assertNotIn(self.group_user_id, set(portal_user.groups_id))
308+
self.assertIn(portal_role.group_id, set(portal_user.groups_id))

0 commit comments

Comments
 (0)