78 rset, req = self.env.get_rset_and_req('Any X WHERE X eid 999999') |
78 rset, req = self.env.get_rset_and_req('Any X WHERE X eid 999999') |
79 self.assertListEqual(self.pviews(req, rset), |
79 self.assertListEqual(self.pviews(req, rset), |
80 []) |
80 []) |
81 |
81 |
82 def test_possible_views_one_egroup(self): |
82 def test_possible_views_one_egroup(self): |
83 rset, req = self.env.get_rset_and_req('EGroup X WHERE X name "managers"') |
83 rset, req = self.env.get_rset_and_req('CWGroup X WHERE X name "managers"') |
84 self.assertListEqual(self.pviews(req, rset), |
84 self.assertListEqual(self.pviews(req, rset), |
85 [('csvexport', baseviews.CSVRsetView), |
85 [('csvexport', baseviews.CSVRsetView), |
86 ('ecsvexport', baseviews.CSVEntityView), |
86 ('ecsvexport', baseviews.CSVEntityView), |
87 ('editable-table', tableview.EditableTableView), |
87 ('editable-table', tableview.EditableTableView), |
88 ('filetree', treeview.FileTreeView), |
88 ('filetree', treeview.FileTreeView), |
100 ('xbel', xbel.XbelView), |
100 ('xbel', xbel.XbelView), |
101 ('xml', baseviews.XmlView), |
101 ('xml', baseviews.XmlView), |
102 ]) |
102 ]) |
103 |
103 |
104 def test_possible_views_multiple_egroups(self): |
104 def test_possible_views_multiple_egroups(self): |
105 rset, req = self.env.get_rset_and_req('EGroup X') |
105 rset, req = self.env.get_rset_and_req('CWGroup X') |
106 self.assertListEqual(self.pviews(req, rset), |
106 self.assertListEqual(self.pviews(req, rset), |
107 [('csvexport', baseviews.CSVRsetView), |
107 [('csvexport', baseviews.CSVRsetView), |
108 ('ecsvexport', baseviews.CSVEntityView), |
108 ('ecsvexport', baseviews.CSVEntityView), |
109 ('editable-table', tableview.EditableTableView), |
109 ('editable-table', tableview.EditableTableView), |
110 ('filetree', treeview.FileTreeView), |
110 ('filetree', treeview.FileTreeView), |
153 ('rsetxml', baseviews.XMLRsetView), |
153 ('rsetxml', baseviews.XMLRsetView), |
154 ('table', tableview.TableView), |
154 ('table', tableview.TableView), |
155 ]) |
155 ]) |
156 |
156 |
157 def test_possible_views_multiple_eusers(self): |
157 def test_possible_views_multiple_eusers(self): |
158 rset, req = self.env.get_rset_and_req('EUser X') |
158 rset, req = self.env.get_rset_and_req('CWUser X') |
159 self.assertListEqual(self.pviews(req, rset), |
159 self.assertListEqual(self.pviews(req, rset), |
160 [('csvexport', baseviews.CSVRsetView), |
160 [('csvexport', baseviews.CSVRsetView), |
161 ('ecsvexport', baseviews.CSVEntityView), |
161 ('ecsvexport', baseviews.CSVEntityView), |
162 ('editable-table', tableview.EditableTableView), |
162 ('editable-table', tableview.EditableTableView), |
163 ('filetree', treeview.FileTreeView), |
163 ('filetree', treeview.FileTreeView), |
164 ('foaf', euser.FoafView), |
164 ('foaf', euser.FoafView), |
165 ('list', baseviews.ListView), |
165 ('list', baseviews.ListView), |
166 ('oneline', baseviews.OneLineView), |
166 ('oneline', baseviews.OneLineView), |
167 ('owlabox', owl.OWLABOXView), |
167 ('owlabox', owl.OWLABOXView), |
168 ('primary', euser.EUserPrimaryView), |
168 ('primary', euser.CWUserPrimaryView), |
169 ('rsetxml', baseviews.XMLRsetView), |
169 ('rsetxml', baseviews.XMLRsetView), |
170 ('rss', baseviews.RssView), |
170 ('rss', baseviews.RssView), |
171 ('secondary', baseviews.SecondaryView), |
171 ('secondary', baseviews.SecondaryView), |
172 ('security', management.SecurityManagementView), |
172 ('security', management.SecurityManagementView), |
173 ('table', tableview.TableView), |
173 ('table', tableview.TableView), |
174 ('text', baseviews.TextView), |
174 ('text', baseviews.TextView), |
175 ('treeview', treeview.TreeView), |
175 ('treeview', treeview.TreeView), |
176 ('vcard', vcard.VCardEUserView), |
176 ('vcard', vcard.VCardCWUserView), |
177 ('xbel', xbel.XbelView), |
177 ('xbel', xbel.XbelView), |
178 ('xml', baseviews.XmlView), |
178 ('xml', baseviews.XmlView), |
179 ]) |
179 ]) |
180 |
180 |
181 def test_possible_actions_none_rset(self): |
181 def test_possible_actions_none_rset(self): |
191 {'useractions': USERACTIONS, |
191 {'useractions': USERACTIONS, |
192 'siteactions': SITEACTIONS, |
192 'siteactions': SITEACTIONS, |
193 }) |
193 }) |
194 |
194 |
195 def test_possible_actions_same_type_entities(self): |
195 def test_possible_actions_same_type_entities(self): |
196 rset, req = self.env.get_rset_and_req('EGroup X') |
196 rset, req = self.env.get_rset_and_req('CWGroup X') |
197 self.assertDictEqual(self.pactions(req, rset), |
197 self.assertDictEqual(self.pactions(req, rset), |
198 {'useractions': USERACTIONS, |
198 {'useractions': USERACTIONS, |
199 'siteactions': SITEACTIONS, |
199 'siteactions': SITEACTIONS, |
200 'mainactions': [('muledit', actions.MultipleEditAction)], |
200 'mainactions': [('muledit', actions.MultipleEditAction)], |
201 'moreactions': [('delete', actions.DeleteAction), |
201 'moreactions': [('delete', actions.DeleteAction), |
215 self.assertDictEqual(self.pactions(req, rset), |
215 self.assertDictEqual(self.pactions(req, rset), |
216 {'useractions': USERACTIONS, |
216 {'useractions': USERACTIONS, |
217 'siteactions': SITEACTIONS}) |
217 'siteactions': SITEACTIONS}) |
218 |
218 |
219 def test_possible_actions_eetype_euser_entity(self): |
219 def test_possible_actions_eetype_euser_entity(self): |
220 rset, req = self.env.get_rset_and_req('EEType X WHERE X name "EUser"') |
220 rset, req = self.env.get_rset_and_req('CWEType X WHERE X name "CWUser"') |
221 self.assertDictEqual(self.pactions(req, rset), |
221 self.assertDictEqual(self.pactions(req, rset), |
222 {'useractions': USERACTIONS, |
222 {'useractions': USERACTIONS, |
223 'siteactions': SITEACTIONS, |
223 'siteactions': SITEACTIONS, |
224 'mainactions': [('edit', actions.ModifyAction), |
224 'mainactions': [('edit', actions.ModifyAction), |
225 ('workflow', schemaentities.ViewWorkflowAction),], |
225 ('workflow', schemaentities.ViewWorkflowAction),], |
231 |
231 |
232 def test_select_creation_form(self): |
232 def test_select_creation_form(self): |
233 rset = None |
233 rset = None |
234 req = self.request() |
234 req = self.request() |
235 # creation form |
235 # creation form |
236 req.form['etype'] = 'EGroup' |
236 req.form['etype'] = 'CWGroup' |
237 self.assertIsInstance(self.vreg.select_view('creation', req, rset), |
237 self.assertIsInstance(self.vreg.select_view('creation', req, rset), |
238 baseforms.CreationForm) |
238 baseforms.CreationForm) |
239 del req.form['etype'] |
239 del req.form['etype'] |
240 # custom creation form |
240 # custom creation form |
241 class EUserCreationForm(baseforms.CreationForm): |
241 class CWUserCreationForm(baseforms.CreationForm): |
242 __select__ = specified_etype_implements('EUser') |
242 __select__ = specified_etype_implements('CWUser') |
243 self.vreg.register_vobject_class(EUserCreationForm) |
243 self.vreg.register_vobject_class(CWUserCreationForm) |
244 req.form['etype'] = 'EUser' |
244 req.form['etype'] = 'CWUser' |
245 self.assertIsInstance(self.vreg.select_view('creation', req, rset), |
245 self.assertIsInstance(self.vreg.select_view('creation', req, rset), |
246 EUserCreationForm) |
246 CWUserCreationForm) |
247 |
247 |
248 def test_select_view(self): |
248 def test_select_view(self): |
249 # no entity |
249 # no entity |
250 rset = None |
250 rset = None |
251 req = self.request() |
251 req = self.request() |
265 self.failUnlessRaises(NoSelectableObject, |
265 self.failUnlessRaises(NoSelectableObject, |
266 self.vreg.select_view, 'primary', req, rset) |
266 self.vreg.select_view, 'primary', req, rset) |
267 self.failUnlessRaises(NoSelectableObject, |
267 self.failUnlessRaises(NoSelectableObject, |
268 self.vreg.select_view, 'table', req, rset) |
268 self.vreg.select_view, 'table', req, rset) |
269 # one entity |
269 # one entity |
270 rset, req = self.env.get_rset_and_req('EGroup X WHERE X name "managers"') |
270 rset, req = self.env.get_rset_and_req('CWGroup X WHERE X name "managers"') |
271 self.assertIsInstance(self.vreg.select_view('primary', req, rset), |
271 self.assertIsInstance(self.vreg.select_view('primary', req, rset), |
272 baseviews.PrimaryView) |
272 baseviews.PrimaryView) |
273 self.assertIsInstance(self.vreg.select_view('list', req, rset), |
273 self.assertIsInstance(self.vreg.select_view('list', req, rset), |
274 baseviews.ListView) |
274 baseviews.ListView) |
275 self.assertIsInstance(self.vreg.select_view('edition', req, rset), |
275 self.assertIsInstance(self.vreg.select_view('edition', req, rset), |
279 self.failUnlessRaises(NoSelectableObject, |
279 self.failUnlessRaises(NoSelectableObject, |
280 self.vreg.select_view, 'creation', req, rset) |
280 self.vreg.select_view, 'creation', req, rset) |
281 self.failUnlessRaises(NoSelectableObject, |
281 self.failUnlessRaises(NoSelectableObject, |
282 self.vreg.select_view, 'index', req, rset) |
282 self.vreg.select_view, 'index', req, rset) |
283 # list of entities of the same type |
283 # list of entities of the same type |
284 rset, req = self.env.get_rset_and_req('EGroup X') |
284 rset, req = self.env.get_rset_and_req('CWGroup X') |
285 self.assertIsInstance(self.vreg.select_view('primary', req, rset), |
285 self.assertIsInstance(self.vreg.select_view('primary', req, rset), |
286 baseviews.PrimaryView) |
286 baseviews.PrimaryView) |
287 self.assertIsInstance(self.vreg.select_view('list', req, rset), |
287 self.assertIsInstance(self.vreg.select_view('list', req, rset), |
288 baseviews.ListView) |
288 baseviews.ListView) |
289 self.assertIsInstance(self.vreg.select_view('table', req, rset), |
289 self.assertIsInstance(self.vreg.select_view('table', req, rset), |
315 self.failUnlessRaises(NoSelectableObject, |
315 self.failUnlessRaises(NoSelectableObject, |
316 self.vreg.select_view, 'list', req, rset) |
316 self.vreg.select_view, 'list', req, rset) |
317 self.failUnlessRaises(NoSelectableObject, |
317 self.failUnlessRaises(NoSelectableObject, |
318 self.vreg.select_view, 'edition', req, rset) |
318 self.vreg.select_view, 'edition', req, rset) |
319 # mixed query |
319 # mixed query |
320 rset, req = self.env.get_rset_and_req('Any U,G WHERE U is EUser, G is EGroup') |
320 rset, req = self.env.get_rset_and_req('Any U,G WHERE U is CWUser, G is CWGroup') |
321 self.failUnlessRaises(NoSelectableObject, |
321 self.failUnlessRaises(NoSelectableObject, |
322 self.vreg.select_view, 'edition', req, rset) |
322 self.vreg.select_view, 'edition', req, rset) |
323 self.failUnlessRaises(NoSelectableObject, |
323 self.failUnlessRaises(NoSelectableObject, |
324 self.vreg.select_view, 'creation', req, rset) |
324 self.vreg.select_view, 'creation', req, rset) |
325 self.assertIsInstance(self.vreg.select_view('table', req, rset), |
325 self.assertIsInstance(self.vreg.select_view('table', req, rset), |
326 tableview.TableView) |
326 tableview.TableView) |
327 # euser primary view priority |
327 # euser primary view priority |
328 rset, req = self.env.get_rset_and_req('EUser X WHERE X login "admin"') |
328 rset, req = self.env.get_rset_and_req('CWUser X WHERE X login "admin"') |
329 self.assertIsInstance(self.vreg.select_view('primary', req, rset), |
329 self.assertIsInstance(self.vreg.select_view('primary', req, rset), |
330 euser.EUserPrimaryView) |
330 euser.CWUserPrimaryView) |
331 self.assertIsInstance(self.vreg.select_view('text', req, rset), |
331 self.assertIsInstance(self.vreg.select_view('text', req, rset), |
332 baseviews.TextView) |
332 baseviews.TextView) |
333 |
333 |
334 def test_interface_selector(self): |
334 def test_interface_selector(self): |
335 image = self.add_entity('Image', name=u'bim.png', data=Binary('bim')) |
335 image = self.add_entity('Image', name=u'bim.png', data=Binary('bim')) |
365 raise |
365 raise |
366 |
366 |
367 def test_form(self): |
367 def test_form(self): |
368 for vid, rql, args in ( |
368 for vid, rql, args in ( |
369 #('creation', 'Any X WHERE X eid 999999', {}), |
369 #('creation', 'Any X WHERE X eid 999999', {}), |
370 ('edition', 'EGroup X WHERE X name "managers"', {}), |
370 ('edition', 'CWGroup X WHERE X name "managers"', {}), |
371 ('copy', 'EGroup X WHERE X name "managers"', {}), |
371 ('copy', 'CWGroup X WHERE X name "managers"', {}), |
372 ('muledit', 'EGroup X', {}), |
372 ('muledit', 'CWGroup X', {}), |
373 #('muledit', 'Any X', {}), |
373 #('muledit', 'Any X', {}), |
374 ): |
374 ): |
375 self._test_view(vid, rql, args) |
375 self._test_view(vid, rql, args) |
376 |
376 |
377 |
377 |
403 try: |
403 try: |
404 # login as a simple user |
404 # login as a simple user |
405 self.create_user('john') |
405 self.create_user('john') |
406 self.login('john') |
406 self.login('john') |
407 # it should not be possible to use SomeAction not owned objects |
407 # it should not be possible to use SomeAction not owned objects |
408 rset, req = self.env.get_rset_and_req('Any G WHERE G is EGroup, G name "managers"') |
408 rset, req = self.env.get_rset_and_req('Any G WHERE G is CWGroup, G name "managers"') |
409 self.failIf('foo' in self.pactions(req, rset)) |
409 self.failIf('foo' in self.pactions(req, rset)) |
410 # insert a new card, and check that we can use SomeAction on our object |
410 # insert a new card, and check that we can use SomeAction on our object |
411 self.execute('INSERT Card C: C title "zoubidou"') |
411 self.execute('INSERT Card C: C title "zoubidou"') |
412 self.commit() |
412 self.commit() |
413 rset, req = self.env.get_rset_and_req('Card C WHERE C title "zoubidou"') |
413 rset, req = self.env.get_rset_and_req('Card C WHERE C title "zoubidou"') |
418 self.failIf('foo' in self.pactions(req, rset)) |
418 self.failIf('foo' in self.pactions(req, rset)) |
419 finally: |
419 finally: |
420 del self.vreg[SomeAction.__registry__][SomeAction.id] |
420 del self.vreg[SomeAction.__registry__][SomeAction.id] |
421 |
421 |
422 |
422 |
423 class EETypeRQLAction(Action): |
423 class CWETypeRQLAction(Action): |
424 id = 'testaction' |
424 id = 'testaction' |
425 __select__ = implements('EEType') & rql_condition('X name "EEType"') |
425 __select__ = implements('CWEType') & rql_condition('X name "CWEType"') |
426 title = 'bla' |
426 title = 'bla' |
427 |
427 |
428 class RQLActionTC(ViewSelectorTC): |
428 class RQLActionTC(ViewSelectorTC): |
429 |
429 |
430 def setUp(self): |
430 def setUp(self): |
431 super(RQLActionTC, self).setUp() |
431 super(RQLActionTC, self).setUp() |
432 self.vreg.register_vobject_class(EETypeRQLAction) |
432 self.vreg.register_vobject_class(CWETypeRQLAction) |
433 |
433 |
434 def tearDown(self): |
434 def tearDown(self): |
435 super(RQLActionTC, self).tearDown() |
435 super(RQLActionTC, self).tearDown() |
436 del self.vreg._registries['actions']['testaction'] |
436 del self.vreg._registries['actions']['testaction'] |
437 |
437 |
438 def test(self): |
438 def test(self): |
439 rset, req = self.env.get_rset_and_req('EEType X WHERE X name "EEType"') |
439 rset, req = self.env.get_rset_and_req('CWEType X WHERE X name "CWEType"') |
440 self.assertDictEqual(self.pactions(req, rset), |
440 self.assertDictEqual(self.pactions(req, rset), |
441 {'useractions': USERACTIONS, |
441 {'useractions': USERACTIONS, |
442 'siteactions': SITEACTIONS, |
442 'siteactions': SITEACTIONS, |
443 'mainactions': [('edit', actions.ModifyAction)], |
443 'mainactions': [('edit', actions.ModifyAction)], |
444 'moreactions': [('delete', actions.DeleteAction), |
444 'moreactions': [('delete', actions.DeleteAction), |
445 ('copy', actions.CopyAction), |
445 ('copy', actions.CopyAction), |
446 ('testaction', EETypeRQLAction), |
446 ('testaction', CWETypeRQLAction), |
447 ('managepermission', actions.ManagePermissionsAction)], |
447 ('managepermission', actions.ManagePermissionsAction)], |
448 }) |
448 }) |
449 rset, req = self.env.get_rset_and_req('EEType X WHERE X name "ERType"') |
449 rset, req = self.env.get_rset_and_req('CWEType X WHERE X name "CWRType"') |
450 self.assertDictEqual(self.pactions(req, rset), |
450 self.assertDictEqual(self.pactions(req, rset), |
451 {'useractions': USERACTIONS, |
451 {'useractions': USERACTIONS, |
452 'siteactions': SITEACTIONS, |
452 'siteactions': SITEACTIONS, |
453 'mainactions': [('edit', actions.ModifyAction)], |
453 'mainactions': [('edit', actions.ModifyAction)], |
454 'moreactions': [('delete', actions.DeleteAction), |
454 'moreactions': [('delete', actions.DeleteAction), |