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