31 def rbc(entity, formtype, section): |
27 def rbc(entity, formtype, section): |
32 if section in ('attributes', 'metadata', 'hidden'): |
28 if section in ('attributes', 'metadata', 'hidden'): |
33 permission = 'update' |
29 permission = 'update' |
34 else: |
30 else: |
35 permission = 'add' |
31 permission = 'add' |
36 return [(rschema.type, x) for rschema, tschemas, x in AFS.relations_by_section(entity, formtype, section, permission)] |
32 return [(rschema.type, x) |
|
33 for rschema, tschemas, x in AFS.relations_by_section(entity, |
|
34 formtype, |
|
35 section, |
|
36 permission)] |
37 |
37 |
38 class AutomaticEntityFormTC(CubicWebTC): |
38 class AutomaticEntityFormTC(CubicWebTC): |
39 |
39 |
40 def test_custom_widget(self): |
40 def test_custom_widget(self): |
41 AFFK.tag_subject_of(('CWUser', 'login', '*'), |
41 with self.admin_access.web_request() as req: |
42 {'widget': AutoCompletionWidget(autocomplete_initfunc='get_logins')}) |
42 AFFK.tag_subject_of(('CWUser', 'login', '*'), |
43 form = self.vreg['forms'].select('edition', self.request(), |
43 {'widget': AutoCompletionWidget(autocomplete_initfunc='get_logins')}) |
44 entity=self.user()) |
44 form = self.vreg['forms'].select('edition', req, entity=self.user(req)) |
45 field = form.field_by_name('login', 'subject') |
45 field = form.field_by_name('login', 'subject') |
46 self.assertIsInstance(field.widget, AutoCompletionWidget) |
46 self.assertIsInstance(field.widget, AutoCompletionWidget) |
47 AFFK.del_rtag('CWUser', 'login', '*', 'subject') |
47 AFFK.del_rtag('CWUser', 'login', '*', 'subject') |
48 |
48 |
49 |
49 |
50 def test_cwuser_relations_by_category(self): |
50 def test_cwuser_relations_by_category(self): |
51 e = self.vreg['etypes'].etype_class('CWUser')(self.request()) |
51 with self.admin_access.web_request() as req: |
52 # see custom configuration in views.cwuser |
52 e = self.vreg['etypes'].etype_class('CWUser')(req) |
53 self.assertEqual(rbc(e, 'main', 'attributes'), |
53 # see custom configuration in views.cwuser |
54 [('login', 'subject'), |
54 self.assertEqual(rbc(e, 'main', 'attributes'), |
55 ('upassword', 'subject'), |
|
56 ('firstname', 'subject'), |
|
57 ('surname', 'subject'), |
|
58 ('in_group', 'subject'), |
|
59 ]) |
|
60 self.assertListEqual(rbc(e, 'muledit', 'attributes'), |
|
61 [('login', 'subject'), |
55 [('login', 'subject'), |
62 ('upassword', 'subject'), |
56 ('upassword', 'subject'), |
|
57 ('firstname', 'subject'), |
|
58 ('surname', 'subject'), |
63 ('in_group', 'subject'), |
59 ('in_group', 'subject'), |
64 ]) |
60 ]) |
65 self.assertListEqual(rbc(e, 'main', 'metadata'), |
61 self.assertListEqual(rbc(e, 'muledit', 'attributes'), |
66 [('last_login_time', 'subject'), |
62 [('login', 'subject'), |
67 ('cw_source', 'subject'), |
63 ('upassword', 'subject'), |
68 ('creation_date', 'subject'), |
64 ('in_group', 'subject'), |
69 ('cwuri', 'subject'), |
65 ]) |
70 ('modification_date', 'subject'), |
66 self.assertListEqual(rbc(e, 'main', 'metadata'), |
71 ('created_by', 'subject'), |
67 [('last_login_time', 'subject'), |
72 ('owned_by', 'subject'), |
68 ('cw_source', 'subject'), |
73 ('bookmarked_by', 'object'), |
69 ('creation_date', 'subject'), |
74 ]) |
70 ('cwuri', 'subject'), |
75 # XXX skip 'tags' relation here and in the hidden category because |
71 ('modification_date', 'subject'), |
76 # of some test interdependancy when pytest is launched on whole cw |
72 ('created_by', 'subject'), |
77 # (appears here while expected in hidden |
73 ('owned_by', 'subject'), |
78 self.assertListEqual([x for x in rbc(e, 'main', 'relations') |
74 ('bookmarked_by', 'object'), |
79 if x != ('tags', 'object')], |
75 ]) |
80 [('connait', 'subject'), |
76 # XXX skip 'tags' relation here and in the hidden category because |
81 ('custom_workflow', 'subject'), |
77 # of some test interdependancy when pytest is launched on whole cw |
82 ('primary_email', 'subject'), |
78 # (appears here while expected in hidden |
83 ('checked_by', 'object'), |
79 self.assertListEqual([x for x in rbc(e, 'main', 'relations') |
84 ]) |
80 if x != ('tags', 'object')], |
85 self.assertListEqual(rbc(e, 'main', 'inlined'), |
81 [('connait', 'subject'), |
86 [('use_email', 'subject'), |
82 ('custom_workflow', 'subject'), |
87 ]) |
83 ('primary_email', 'subject'), |
88 # owned_by is defined both as subject and object relations on CWUser |
84 ('checked_by', 'object'), |
89 self.assertListEqual(sorted(x for x in rbc(e, 'main', 'hidden') |
85 ]) |
90 if x != ('tags', 'object')), |
86 self.assertListEqual(rbc(e, 'main', 'inlined'), |
91 sorted([('for_user', 'object'), |
87 [('use_email', 'subject'), |
92 ('created_by', 'object'), |
88 ]) |
93 ('wf_info_for', 'object'), |
89 # owned_by is defined both as subject and object relations on CWUser |
94 ('owned_by', 'object'), |
90 self.assertListEqual(sorted(x for x in rbc(e, 'main', 'hidden') |
95 ])) |
91 if x != ('tags', 'object')), |
|
92 sorted([('for_user', 'object'), |
|
93 ('created_by', 'object'), |
|
94 ('wf_info_for', 'object'), |
|
95 ('owned_by', 'object'), |
|
96 ])) |
96 |
97 |
97 def test_inlined_view(self): |
98 def test_inlined_view(self): |
98 self.assertTrue('main_inlined' in AFS.etype_get('CWUser', 'use_email', 'subject', 'EmailAddress')) |
99 self.assertIn('main_inlined', |
99 self.assertFalse('main_inlined' in AFS.etype_get('CWUser', 'primary_email', 'subject', 'EmailAddress')) |
100 AFS.etype_get('CWUser', 'use_email', 'subject', 'EmailAddress')) |
100 self.assertTrue('main_relations' in AFS.etype_get('CWUser', 'primary_email', 'subject', 'EmailAddress')) |
101 self.assertNotIn('main_inlined', |
|
102 AFS.etype_get('CWUser', 'primary_email', 'subject', 'EmailAddress')) |
|
103 self.assertIn('main_relations', |
|
104 AFS.etype_get('CWUser', 'primary_email', 'subject', 'EmailAddress')) |
101 |
105 |
102 def test_personne_relations_by_category(self): |
106 def test_personne_relations_by_category(self): |
103 e = self.vreg['etypes'].etype_class('Personne')(self.request()) |
107 with self.admin_access.web_request() as req: |
104 self.assertListEqual(rbc(e, 'main', 'attributes'), |
108 e = self.vreg['etypes'].etype_class('Personne')(req) |
105 [('nom', 'subject'), |
109 self.assertListEqual(rbc(e, 'main', 'attributes'), |
106 ('prenom', 'subject'), |
110 [('nom', 'subject'), |
107 ('sexe', 'subject'), |
111 ('prenom', 'subject'), |
108 ('promo', 'subject'), |
112 ('sexe', 'subject'), |
109 ('titre', 'subject'), |
113 ('promo', 'subject'), |
110 ('ass', 'subject'), |
114 ('titre', 'subject'), |
111 ('web', 'subject'), |
115 ('ass', 'subject'), |
112 ('tel', 'subject'), |
116 ('web', 'subject'), |
113 ('fax', 'subject'), |
117 ('tel', 'subject'), |
114 ('datenaiss', 'subject'), |
118 ('fax', 'subject'), |
115 ('test', 'subject'), |
119 ('datenaiss', 'subject'), |
116 ('description', 'subject'), |
120 ('test', 'subject'), |
117 ('salary', 'subject'), |
121 ('description', 'subject'), |
118 ]) |
122 ('salary', 'subject'), |
119 self.assertListEqual(rbc(e, 'muledit', 'attributes'), |
123 ]) |
120 [('nom', 'subject'), |
124 self.assertListEqual(rbc(e, 'muledit', 'attributes'), |
121 ]) |
125 [('nom', 'subject'), |
122 self.assertListEqual(rbc(e, 'main', 'metadata'), |
126 ]) |
123 [('cw_source', 'subject'), |
127 self.assertListEqual(rbc(e, 'main', 'metadata'), |
124 ('creation_date', 'subject'), |
128 [('cw_source', 'subject'), |
125 ('cwuri', 'subject'), |
129 ('creation_date', 'subject'), |
126 ('modification_date', 'subject'), |
130 ('cwuri', 'subject'), |
127 ('created_by', 'subject'), |
131 ('modification_date', 'subject'), |
128 ('owned_by', 'subject'), |
132 ('created_by', 'subject'), |
129 ]) |
133 ('owned_by', 'subject'), |
130 self.assertListEqual(rbc(e, 'main', 'relations'), |
134 ]) |
131 [('travaille', 'subject'), |
135 self.assertListEqual(rbc(e, 'main', 'relations'), |
132 ('manager', 'object'), |
136 [('travaille', 'subject'), |
133 ('connait', 'object'), |
137 ('manager', 'object'), |
134 ]) |
138 ('connait', 'object'), |
135 self.assertListEqual(rbc(e, 'main', 'hidden'), |
139 ]) |
136 []) |
140 self.assertListEqual(rbc(e, 'main', 'hidden'), |
|
141 []) |
137 |
142 |
138 def test_edition_form(self): |
143 def test_edition_form(self): |
139 rset = self.execute('CWUser X LIMIT 1') |
144 with self.admin_access.web_request() as req: |
140 form = self.vreg['forms'].select('edition', rset.req, rset=rset, |
145 rset = req.execute('CWUser X LIMIT 1') |
141 row=0, col=0) |
146 form = self.vreg['forms'].select('edition', req, rset=rset, row=0, col=0) |
142 # should be also selectable by specifying entity |
147 # should be also selectable by specifying entity |
143 self.vreg['forms'].select('edition', rset.req, |
148 self.vreg['forms'].select('edition', req, entity=rset.get_entity(0, 0)) |
144 entity=rset.get_entity(0, 0)) |
149 self.assertFalse(any(f for f in form.fields if f is None)) |
145 self.assertFalse(any(f for f in form.fields if f is None)) |
|
146 |
150 |
147 |
151 |
148 class FormViewsTC(CubicWebTC): |
152 class FormViewsTC(CubicWebTC): |
|
153 |
149 def test_delete_conf_formview(self): |
154 def test_delete_conf_formview(self): |
150 rset = self.execute('CWGroup X') |
155 with self.admin_access.web_request() as req: |
151 self.view('deleteconf', rset, template=None).source |
156 rset = req.execute('CWGroup X') |
|
157 self.view('deleteconf', rset, template=None, req=req).source |
152 |
158 |
153 def test_automatic_edition_formview(self): |
159 def test_automatic_edition_formview(self): |
154 rset = self.execute('CWUser X') |
160 with self.admin_access.web_request() as req: |
155 self.view('edition', rset, row=0, template=None).source |
161 rset = req.execute('CWUser X') |
156 |
162 self.view('edition', rset, row=0, template=None, req=req).source |
157 def test_automatic_edition_formview(self): |
163 |
158 rset = self.execute('CWUser X') |
164 def test_automatic_edition_copyformview(self): |
159 self.view('copy', rset, row=0, template=None).source |
165 with self.admin_access.web_request() as req: |
|
166 rset = req.execute('CWUser X') |
|
167 self.view('copy', rset, row=0, template=None, req=req).source |
160 |
168 |
161 def test_automatic_creation_formview(self): |
169 def test_automatic_creation_formview(self): |
162 self.view('creation', None, etype='CWUser', template=None).source |
170 with self.admin_access.web_request() as req: |
|
171 self.view('creation', None, etype='CWUser', template=None, req=req).source |
163 |
172 |
164 def test_automatic_muledit_formview(self): |
173 def test_automatic_muledit_formview(self): |
165 rset = self.execute('CWUser X') |
174 with self.admin_access.web_request() as req: |
166 self.view('muledit', rset, template=None).source |
175 rset = req.execute('CWUser X') |
|
176 self.view('muledit', rset, template=None, req=req).source |
167 |
177 |
168 def test_automatic_reledit_formview(self): |
178 def test_automatic_reledit_formview(self): |
169 rset = self.execute('CWUser X') |
179 with self.admin_access.web_request() as req: |
170 self.view('reledit', rset, row=0, rtype='login', template=None).source |
180 rset = req.execute('CWUser X') |
|
181 self.view('reledit', rset, row=0, rtype='login', template=None, req=req).source |
171 |
182 |
172 def test_automatic_inline_edit_formview(self): |
183 def test_automatic_inline_edit_formview(self): |
173 geid = self.execute('CWGroup X LIMIT 1')[0][0] |
184 with self.admin_access.web_request() as req: |
174 rset = self.execute('CWUser X LIMIT 1') |
185 geid = req.execute('CWGroup X LIMIT 1')[0][0] |
175 self.view('inline-edition', rset, row=0, col=0, rtype='in_group', |
186 rset = req.execute('CWUser X LIMIT 1') |
176 peid=geid, role='object', i18nctx='', pform=MOCKPFORM, |
187 self.view('inline-edition', rset, row=0, col=0, rtype='in_group', |
177 template=None).source |
188 peid=geid, role='object', i18nctx='', pform=MOCKPFORM, |
|
189 template=None, req=req).source |
178 |
190 |
179 def test_automatic_inline_creation_formview(self): |
191 def test_automatic_inline_creation_formview(self): |
180 geid = self.execute('CWGroup X LIMIT 1')[0][0] |
192 with self.admin_access.web_request() as req: |
181 self.view('inline-creation', None, etype='CWUser', rtype='in_group', |
193 geid = req.execute('CWGroup X LIMIT 1')[0][0] |
182 peid=geid, petype='CWGroup', i18nctx='', role='object', pform=MOCKPFORM, |
194 self.view('inline-creation', None, etype='CWUser', rtype='in_group', |
183 template=None) |
195 peid=geid, petype='CWGroup', i18nctx='', role='object', pform=MOCKPFORM, |
|
196 template=None, req=req) |
184 |
197 |
185 MOCKPFORM = mock_object(form_previous_values={}, form_valerror=None) |
198 MOCKPFORM = mock_object(form_previous_values={}, form_valerror=None) |
186 |
199 |
187 if __name__ == '__main__': |
200 if __name__ == '__main__': |
188 unittest_main() |
201 unittest_main() |