11# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
2- from odoo .tests .common import TransactionCase
2+ from odoo import fields
3+ from odoo .tests .common import TransactionCase , new_test_user
34
45
56class TestUserProfile (TransactionCase ):
6- def _helper_unpack_groups_role (self , role ):
7- role_group_ids = role .trans_implied_ids .ids
8- role_group_ids .append (role .group_id .id )
9- return sorted (set (role_group_ids ))
10-
11- def _helper_unpack_groups_group (self , group ):
12- group_ids = group .trans_implied_ids .ids
13- group_ids .append (group .id )
14- return sorted (set (group_ids ))
15-
16- def setUp (self ):
17- super ().setUp ()
18- self .user_model = self .env ["res.users" ]
19- self .role_model = self .env ["res.users.role" ]
7+ @classmethod
8+ def setUpClass (cls ):
9+ super ().setUpClass ()
10+ cls .role_model = cls .env ["res.users.role" ]
2011
21- self .default_user = self .env .ref ("base.default_user" )
22- user_vals = {
23- "name" : "USER TEST (ROLES)" ,
24- "login" : "user_test_roles" ,
25- }
26- self .user_id = self .user_model .create (user_vals )
12+ cls .user_id = new_test_user (
13+ cls .env , login = "user_test_roles" , name = "USER TEST (ROLES)"
14+ )
2715
28- self .profile1_id = self .env ["res.users.profile" ].create ({"name" : "profile1" })
29- self .profile2_id = self .env ["res.users.profile" ].create ({"name" : "profile2" })
16+ cls .profile1_id = cls .env ["res.users.profile" ].create ({"name" : "profile1" })
17+ cls .profile2_id = cls .env ["res.users.profile" ].create ({"name" : "profile2" })
3018
3119 # role 1
32- self .group_user_id = self .env .ref ("base.group_user" )
33- self .group_no_one_id = self .env .ref ("base.group_no_one" )
20+ cls .group_user_id = cls .env .ref ("base.group_user" )
21+ cls .group_no_one_id = cls .env .ref ("base.group_no_one" )
3422
3523 # role 2
36- self .group_system_id = self .env .ref ("base.group_system" )
37- self .group_multi_company_id = self .env .ref ("base.group_multi_company" )
24+ cls .group_system_id = cls .env .ref ("base.group_system" )
25+ cls .group_multi_company_id = cls .env .ref ("base.group_multi_company" )
3826
3927 # role 3
40- self .group_erp_manager_id = self .env .ref ("base.group_erp_manager" )
41- self .group_partner_manager_id = self .env .ref ("base.group_partner_manager" )
28+ cls .group_erp_manager_id = cls .env .ref ("base.group_erp_manager" )
29+ cls .group_partner_manager_id = cls .env .ref ("base.group_partner_manager" )
4230
4331 # roles 1 and 2 have a profile, role 3 no profile
4432 vals = {
4533 "name" : "ROLE_1" ,
46- "implied_ids" : [(6 , 0 , [self .group_user_id .id , self .group_no_one_id .id ])],
47- "profile_id" : self .profile1_id .id ,
34+ "implied_ids" : [
35+ fields .Command .set ([cls .group_user_id .id , cls .group_no_one_id .id ])
36+ ],
37+ "profile_id" : cls .profile1_id .id ,
4838 }
49- self .role1_id = self .role_model .create (vals )
50- self .role1_group_ids = self ._helper_unpack_groups_role (self .role1_id )
39+ cls .role1_id = cls .role_model .create (vals )
40+ cls .role1_group_ids = cls ._helper_unpack_groups_role (cls .role1_id )
5141
5242 vals = {
5343 "name" : "ROLE_2" ,
5444 "implied_ids" : [
55- (
56- 6 ,
57- 0 ,
58- [self .group_system_id .id , self .group_multi_company_id .id ],
45+ fields .Command .set (
46+ [cls .group_system_id .id , cls .group_multi_company_id .id ]
5947 )
6048 ],
61- "profile_id" : self .profile2_id .id ,
49+ "profile_id" : cls .profile2_id .id ,
6250 }
63- self .role2_id = self .role_model .create (vals )
64- self .role2_group_ids = self ._helper_unpack_groups_role (self .role2_id )
51+ cls .role2_id = cls .role_model .create (vals )
52+ cls .role2_group_ids = cls ._helper_unpack_groups_role (cls .role2_id )
6553
6654 vals = {
6755 "name" : "ROLE_3" ,
6856 "implied_ids" : [
69- (
70- 6 ,
71- 0 ,
72- [
73- self .group_erp_manager_id .id ,
74- self .group_partner_manager_id .id ,
75- ],
57+ fields .Command .set (
58+ [cls .group_erp_manager_id .id , cls .group_partner_manager_id .id ]
7659 )
7760 ],
7861 }
79- self .role3_id = self .role_model .create (vals )
80- self .role3_group_ids = self ._helper_unpack_groups_role (self .role3_id )
62+ cls .role3_id = cls .role_model .create (vals )
63+ cls .role3_group_ids = cls ._helper_unpack_groups_role (cls .role3_id )
64+
65+ @staticmethod
66+ def _helper_unpack_groups_role (role ):
67+ role_group_ids = role .all_implied_ids .ids
68+ return sorted (set (role_group_ids ))
69+
70+ @staticmethod
71+ def _helper_unpack_groups_group (group ):
72+ group_ids = group .all_implied_ids .ids
73+ group_ids .append (group .id )
74+ return sorted (set (group_ids ))
8175
8276 def test_filter_by_profile (self ):
83- line1_vals = {"role_id" : self .role1_id .id , "user_id" : self .user_id .id }
84- self .user_id .write ({"role_line_ids" : [(0 , 0 , line1_vals )]})
85- line2_vals = {"role_id" : self .role2_id .id , "user_id" : self .user_id .id }
86- self .user_id .write ({"role_line_ids" : [(0 , 0 , line2_vals )]})
77+ self .user_id .write (
78+ {
79+ "role_line_ids" : [
80+ fields .Command .create (
81+ {"role_id" : self .role1_id .id , "user_id" : self .user_id .id }
82+ )
83+ ]
84+ }
85+ )
86+ self .user_id .write (
87+ {
88+ "role_line_ids" : [
89+ fields .Command .create (
90+ {"role_id" : self .role2_id .id , "user_id" : self .user_id .id }
91+ )
92+ ]
93+ }
94+ )
8795 self .assertEqual (self .user_id .profile_ids , self .profile1_id + self .profile2_id )
8896 self .assertEqual (self .user_id .profile_id , self .profile1_id )
8997 self .assertFalse (self .user_id .restrict_profile_switching )
9098 self .user_id .action_profile_change ({"profile_id" : self .profile1_id .id })
9199
92- user_group_ids = sorted ({group .id for group in self .user_id .groups_id })
100+ user_group_ids = sorted ({group .id for group in self .user_id .group_ids })
93101 expected_group_ids = sorted (set (self .role1_group_ids ))
94102 self .assertEqual (user_group_ids , expected_group_ids )
95103
96104 self .assertFalse (self .user_id .restrict_profile_switching )
97105 self .user_id .action_profile_change ({"profile_id" : self .profile2_id .id })
98106
99- user_group_ids = sorted ({group .id for group in self .user_id .groups_id })
107+ user_group_ids = sorted ({group .id for group in self .user_id .group_ids })
100108 expected_group_ids = sorted (set (self .role2_group_ids ))
101109 self .assertEqual (user_group_ids , expected_group_ids )
102110
103111 def test_restrict_profile_switching (self ):
104- line1_vals = {"role_id" : self .role1_id .id , "user_id" : self .user_id .id }
105- self .user_id .write ({"role_line_ids" : [(0 , 0 , line1_vals )]})
106- line2_vals = {"role_id" : self .role2_id .id , "user_id" : self .user_id .id }
107- self .user_id .write ({"role_line_ids" : [(0 , 0 , line2_vals )]})
112+ self .user_id .write (
113+ {
114+ "role_line_ids" : [
115+ fields .Command .create (
116+ {"role_id" : self .role1_id .id , "user_id" : self .user_id .id }
117+ )
118+ ]
119+ }
120+ )
121+ self .user_id .write (
122+ {
123+ "role_line_ids" : [
124+ fields .Command .create (
125+ {"role_id" : self .role2_id .id , "user_id" : self .user_id .id }
126+ )
127+ ]
128+ }
129+ )
108130 self .assertEqual (self .user_id .profile_id , self .profile1_id )
109131 self .user_id .restrict_profile_switching = True
110132 self .assertTrue (self .user_id .restrict_profile_switching )
111133 self .user_id .action_profile_change ({"profile_id" : self .profile2_id .id })
112134 self .assertEqual (self .user_id .profile_id , self .profile1_id )
113135
114136 def test_allow_by_noprofile (self ):
115- line1_vals = {"role_id" : self .role1_id .id , "user_id" : self .user_id .id }
116- self .user_id .write ({"role_line_ids" : [(0 , 0 , line1_vals )]})
117- line2_vals = {"role_id" : self .role3_id .id , "user_id" : self .user_id .id }
118- self .user_id .write ({"role_line_ids" : [(0 , 0 , line2_vals )]})
137+ self .user_id .write (
138+ {
139+ "role_line_ids" : [
140+ fields .Command .create (
141+ {"role_id" : self .role1_id .id , "user_id" : self .user_id .id }
142+ )
143+ ]
144+ }
145+ )
146+ self .user_id .write (
147+ {
148+ "role_line_ids" : [
149+ fields .Command .create (
150+ {"role_id" : self .role3_id .id , "user_id" : self .user_id .id }
151+ )
152+ ]
153+ }
154+ )
119155 self .assertFalse (self .user_id .include_default_profile )
120156 self .assertEqual (self .user_id .profile_ids , self .profile1_id )
121157 user_group_ids = []
122- for group in self .user_id .groups_id :
158+ for group in self .user_id .group_ids :
123159 user_group_ids += self ._helper_unpack_groups_group (group )
124160 user_group_ids = set (user_group_ids )
125161 expected_groups = set (self .role1_group_ids + self .role3_group_ids )
126162 self .assertEqual (user_group_ids , expected_groups )
127163
128164 def test_include_default_profile (self ):
129- line1_vals = {"role_id" : self .role1_id .id , "user_id" : self .user_id .id }
130- self .user_id .write ({"role_line_ids" : [(0 , 0 , line1_vals )]})
131- line2_vals = {"role_id" : self .role3_id .id , "user_id" : self .user_id .id }
132- self .user_id .write ({"role_line_ids" : [(0 , 0 , line2_vals )]})
165+ self .user_id .write (
166+ {
167+ "role_line_ids" : [
168+ fields .Command .create (
169+ {"role_id" : self .role1_id .id , "user_id" : self .user_id .id }
170+ )
171+ ]
172+ }
173+ )
174+ self .user_id .write (
175+ {
176+ "role_line_ids" : [
177+ fields .Command .create (
178+ {"role_id" : self .role3_id .id , "user_id" : self .user_id .id }
179+ )
180+ ]
181+ }
182+ )
133183 self .user_id .write ({"include_default_profile" : True })
134184 self .assertTrue (self .user_id .include_default_profile )
135185 self .assertEqual (
@@ -138,10 +188,24 @@ def test_include_default_profile(self):
138188 )
139189
140190 def test_update_profile_id (self ):
141- line1_vals = {"role_id" : self .role1_id .id , "user_id" : self .user_id .id }
142- self .user_id .write ({"role_line_ids" : [(0 , 0 , line1_vals )]})
143- line2_vals = {"role_id" : self .role3_id .id , "user_id" : self .user_id .id }
144- self .user_id .write ({"role_line_ids" : [(0 , 0 , line2_vals )]})
191+ self .user_id .write (
192+ {
193+ "role_line_ids" : [
194+ fields .Command .create (
195+ {"role_id" : self .role1_id .id , "user_id" : self .user_id .id }
196+ )
197+ ]
198+ }
199+ )
200+ self .user_id .write (
201+ {
202+ "role_line_ids" : [
203+ fields .Command .create (
204+ {"role_id" : self .role3_id .id , "user_id" : self .user_id .id }
205+ )
206+ ]
207+ }
208+ )
145209 self .assertFalse (self .user_id .include_default_profile )
146210 self .user_id .profile_ids = False
147211 self .user_id ._update_profile_id ()
0 commit comments