81 ('systempropertiesform', cwproperties.SystemCWPropertiesForm), |
81 ('systempropertiesform', cwproperties.SystemCWPropertiesForm), |
82 ('tree', folderviews.FolderTreeView), |
82 ('tree', folderviews.FolderTreeView), |
83 ]) |
83 ]) |
84 |
84 |
85 def test_possible_views_noresult(self): |
85 def test_possible_views_noresult(self): |
86 rset, req = self.rset_and_req('Any X WHERE X eid 999999') |
86 req = self.request() |
|
87 rset = req.execute('Any X WHERE X eid 999999') |
87 self.assertListEqual(self.pviews(req, rset), |
88 self.assertListEqual(self.pviews(req, rset), |
88 []) |
89 []) |
89 |
90 |
90 def test_possible_views_one_egroup(self): |
91 def test_possible_views_one_egroup(self): |
91 rset, req = self.rset_and_req('CWGroup X WHERE X name "managers"') |
92 req = self.request() |
|
93 rset = req.execute('CWGroup X WHERE X name "managers"') |
92 self.assertListEqual(self.pviews(req, rset), |
94 self.assertListEqual(self.pviews(req, rset), |
93 [('adaptedlist', baseviews.AdaptedListView), |
95 [('adaptedlist', baseviews.AdaptedListView), |
94 ('csvexport', csvexport.CSVRsetView), |
96 ('csvexport', csvexport.CSVRsetView), |
95 ('ecsvexport', csvexport.CSVEntityView), |
97 ('ecsvexport', csvexport.CSVEntityView), |
96 ('editable-table', tableview.EditableTableView), |
98 ('editable-table', tableview.EditableTableView), |
109 ('xbel', xbel.XbelView), |
111 ('xbel', xbel.XbelView), |
110 ('xml', xmlrss.XMLView), |
112 ('xml', xmlrss.XMLView), |
111 ]) |
113 ]) |
112 |
114 |
113 def test_possible_views_multiple_egroups(self): |
115 def test_possible_views_multiple_egroups(self): |
114 rset, req = self.rset_and_req('CWGroup X') |
116 req = self.request() |
|
117 rset = req.execute('CWGroup X') |
115 self.assertListEqual(self.pviews(req, rset), |
118 self.assertListEqual(self.pviews(req, rset), |
116 [('adaptedlist', baseviews.AdaptedListView), |
119 [('adaptedlist', baseviews.AdaptedListView), |
117 ('csvexport', csvexport.CSVRsetView), |
120 ('csvexport', csvexport.CSVRsetView), |
118 ('ecsvexport', csvexport.CSVEntityView), |
121 ('ecsvexport', csvexport.CSVEntityView), |
119 ('editable-table', tableview.EditableTableView), |
122 ('editable-table', tableview.EditableTableView), |
133 ('xml', xmlrss.XMLView), |
136 ('xml', xmlrss.XMLView), |
134 ]) |
137 ]) |
135 |
138 |
136 def test_propertiesform_admin(self): |
139 def test_propertiesform_admin(self): |
137 assert self.vreg['views']['propertiesform'] |
140 assert self.vreg['views']['propertiesform'] |
138 rset1, req1 = self.rset_and_req('CWUser X WHERE X login "admin"') |
141 req1 = self.request() |
139 rset2, req2 = self.rset_and_req('CWUser X WHERE X login "anon"') |
142 req2 = self.request() |
|
143 rset1 = req1.execute('CWUser X WHERE X login "admin"') |
|
144 rset2 = req2.execute('CWUser X WHERE X login "anon"') |
140 self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=None)) |
145 self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=None)) |
141 self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=rset1)) |
146 self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=rset1)) |
142 self.failUnless(self.vreg['views'].select('propertiesform', req2, rset=rset2)) |
147 self.failUnless(self.vreg['views'].select('propertiesform', req2, rset=rset2)) |
143 |
148 |
144 def test_propertiesform_anon(self): |
149 def test_propertiesform_anon(self): |
145 self.login('anon') |
150 self.login('anon') |
146 rset1, req1 = self.rset_and_req('CWUser X WHERE X login "admin"') |
151 req1 = self.request() |
147 rset2, req2 = self.rset_and_req('CWUser X WHERE X login "anon"') |
152 req2 = self.request() |
|
153 rset1 = req1.execute('CWUser X WHERE X login "admin"') |
|
154 rset2 = req2.execute('CWUser X WHERE X login "anon"') |
148 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=None) |
155 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=None) |
149 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset1) |
156 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset1) |
150 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset2) |
157 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset2) |
151 |
158 |
152 def test_propertiesform_jdoe(self): |
159 def test_propertiesform_jdoe(self): |
153 self.create_user('jdoe') |
160 self.create_user('jdoe') |
154 self.login('jdoe') |
161 self.login('jdoe') |
155 rset1, req1 = self.rset_and_req('CWUser X WHERE X login "admin"') |
162 req1 = self.request() |
156 rset2, req2 = self.rset_and_req('CWUser X WHERE X login "jdoe"') |
163 req2 = self.request() |
|
164 rset1 = req1.execute('CWUser X WHERE X login "admin"') |
|
165 rset2 = req2.execute('CWUser X WHERE X login "jdoe"') |
157 self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=None)) |
166 self.failUnless(self.vreg['views'].select('propertiesform', req1, rset=None)) |
158 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset1) |
167 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'propertiesform', req1, rset=rset1) |
159 self.failUnless(self.vreg['views'].select('propertiesform', req2, rset=rset2)) |
168 self.failUnless(self.vreg['views'].select('propertiesform', req2, rset=rset2)) |
160 |
169 |
161 def test_possible_views_multiple_different_types(self): |
170 def test_possible_views_multiple_different_types(self): |
162 rset, req = self.rset_and_req('Any X') |
171 req = self.request() |
|
172 rset = req.execute('Any X') |
163 self.assertListEqual(self.pviews(req, rset), |
173 self.assertListEqual(self.pviews(req, rset), |
164 [('csvexport', csvexport.CSVRsetView), |
174 [('csvexport', csvexport.CSVRsetView), |
165 ('ecsvexport', csvexport.CSVEntityView), |
175 ('ecsvexport', csvexport.CSVEntityView), |
166 ('editable-table', tableview.EditableTableView), |
176 ('editable-table', tableview.EditableTableView), |
167 ('filetree', treeview.FileTreeView), |
177 ('filetree', treeview.FileTreeView), |
179 ('xbel', xbel.XbelView), |
189 ('xbel', xbel.XbelView), |
180 ('xml', xmlrss.XMLView), |
190 ('xml', xmlrss.XMLView), |
181 ]) |
191 ]) |
182 |
192 |
183 def test_possible_views_any_rset(self): |
193 def test_possible_views_any_rset(self): |
184 rset, req = self.rset_and_req('Any N, X WHERE X in_group Y, Y name N') |
194 req = self.request() |
|
195 rset = req.execute('Any N, X WHERE X in_group Y, Y name N') |
185 self.assertListEqual(self.pviews(req, rset), |
196 self.assertListEqual(self.pviews(req, rset), |
186 [('csvexport', csvexport.CSVRsetView), |
197 [('csvexport', csvexport.CSVRsetView), |
187 ('editable-table', tableview.EditableTableView), |
198 ('editable-table', tableview.EditableTableView), |
188 ('rsetxml', xmlrss.XMLRsetView), |
199 ('rsetxml', xmlrss.XMLRsetView), |
189 ('table', tableview.TableView), |
200 ('table', tableview.TableView), |
190 ]) |
201 ]) |
191 |
202 |
192 def test_possible_views_multiple_eusers(self): |
203 def test_possible_views_multiple_eusers(self): |
193 rset, req = self.rset_and_req('CWUser X') |
204 req = self.request() |
|
205 rset = req.execute('CWUser X') |
194 self.assertListEqual(self.pviews(req, rset), |
206 self.assertListEqual(self.pviews(req, rset), |
195 [('adaptedlist', baseviews.AdaptedListView), |
207 [('adaptedlist', baseviews.AdaptedListView), |
196 ('csvexport', csvexport.CSVRsetView), |
208 ('csvexport', csvexport.CSVRsetView), |
197 ('ecsvexport', csvexport.CSVEntityView), |
209 ('ecsvexport', csvexport.CSVEntityView), |
198 ('editable-table', tableview.EditableTableView), |
210 ('editable-table', tableview.EditableTableView), |
221 {'useractions': USERACTIONS, |
233 {'useractions': USERACTIONS, |
222 'siteactions': SITEACTIONS, |
234 'siteactions': SITEACTIONS, |
223 |
235 |
224 }) |
236 }) |
225 def test_possible_actions_no_entity(self): |
237 def test_possible_actions_no_entity(self): |
226 rset, req = self.rset_and_req('Any X WHERE X eid 999999') |
238 req = self.request() |
|
239 rset = req.execute('Any X WHERE X eid 999999') |
227 self.assertDictEqual(self.pactions(req, rset), |
240 self.assertDictEqual(self.pactions(req, rset), |
228 {'useractions': USERACTIONS, |
241 {'useractions': USERACTIONS, |
229 'siteactions': SITEACTIONS, |
242 'siteactions': SITEACTIONS, |
230 }) |
243 }) |
231 |
244 |
232 def test_possible_actions_same_type_entities(self): |
245 def test_possible_actions_same_type_entities(self): |
233 rset, req = self.rset_and_req('CWGroup X') |
246 req = self.request() |
|
247 rset = req.execute('CWGroup X') |
234 self.assertDictEqual(self.pactions(req, rset), |
248 self.assertDictEqual(self.pactions(req, rset), |
235 {'useractions': USERACTIONS, |
249 {'useractions': USERACTIONS, |
236 'siteactions': SITEACTIONS, |
250 'siteactions': SITEACTIONS, |
237 'mainactions': [('muledit', actions.MultipleEditAction)], |
251 'mainactions': [('muledit', actions.MultipleEditAction)], |
238 'moreactions': [('delete', actions.DeleteAction), |
252 'moreactions': [('delete', actions.DeleteAction), |
239 ('addentity', actions.AddNewAction)], |
253 ('addentity', actions.AddNewAction)], |
240 }) |
254 }) |
241 |
255 |
242 def test_possible_actions_different_types_entities(self): |
256 def test_possible_actions_different_types_entities(self): |
243 rset, req = self.rset_and_req('Any X') |
257 req = self.request() |
|
258 rset = req.execute('Any X') |
244 self.assertDictEqual(self.pactions(req, rset), |
259 self.assertDictEqual(self.pactions(req, rset), |
245 {'useractions': USERACTIONS, |
260 {'useractions': USERACTIONS, |
246 'siteactions': SITEACTIONS, |
261 'siteactions': SITEACTIONS, |
247 'moreactions': [('delete', actions.DeleteAction)], |
262 'moreactions': [('delete', actions.DeleteAction)], |
248 }) |
263 }) |
249 |
264 |
250 def test_possible_actions_final_entities(self): |
265 def test_possible_actions_final_entities(self): |
251 rset, req = self.rset_and_req('Any N, X WHERE X in_group Y, Y name N') |
266 req = self.request() |
|
267 rset = req.execute('Any N, X WHERE X in_group Y, Y name N') |
252 self.assertDictEqual(self.pactions(req, rset), |
268 self.assertDictEqual(self.pactions(req, rset), |
253 {'useractions': USERACTIONS, |
269 {'useractions': USERACTIONS, |
254 'siteactions': SITEACTIONS}) |
270 'siteactions': SITEACTIONS}) |
255 |
271 |
256 def test_possible_actions_eetype_cwuser_entity(self): |
272 def test_possible_actions_eetype_cwuser_entity(self): |
257 rset, req = self.rset_and_req('CWEType X WHERE X name "CWUser"') |
273 req = self.request() |
|
274 rset = req.execute('CWEType X WHERE X name "CWUser"') |
258 self.assertDictEqual(self.pactions(req, rset), |
275 self.assertDictEqual(self.pactions(req, rset), |
259 {'useractions': USERACTIONS, |
276 {'useractions': USERACTIONS, |
260 'siteactions': SITEACTIONS, |
277 'siteactions': SITEACTIONS, |
261 'mainactions': [('edit', actions.ModifyAction)], |
278 'mainactions': [('edit', actions.ModifyAction)], |
262 'moreactions': [('managepermission', actions.ManagePermissionsAction), |
279 'moreactions': [('managepermission', actions.ManagePermissionsAction), |
294 self.vreg['views'].select, 'primary', req, rset=rset) |
311 self.vreg['views'].select, 'primary', req, rset=rset) |
295 self.failUnlessRaises(NoSelectableObject, |
312 self.failUnlessRaises(NoSelectableObject, |
296 self.vreg['views'].select, 'table', req, rset=rset) |
313 self.vreg['views'].select, 'table', req, rset=rset) |
297 |
314 |
298 # no entity |
315 # no entity |
299 rset, req = self.rset_and_req('Any X WHERE X eid 999999') |
316 req = self.request() |
|
317 rset = req.execute('Any X WHERE X eid 999999') |
300 self.failUnlessRaises(NoSelectableObject, |
318 self.failUnlessRaises(NoSelectableObject, |
301 self.vreg['views'].select, 'index', req, rset=rset) |
319 self.vreg['views'].select, 'index', req, rset=rset) |
302 self.failUnlessRaises(NoSelectableObject, |
320 self.failUnlessRaises(NoSelectableObject, |
303 self.vreg['views'].select, 'creation', req, rset=rset) |
321 self.vreg['views'].select, 'creation', req, rset=rset) |
304 self.failUnlessRaises(NoSelectableObject, |
322 self.failUnlessRaises(NoSelectableObject, |
305 self.vreg['views'].select, 'primary', req, rset=rset) |
323 self.vreg['views'].select, 'primary', req, rset=rset) |
306 self.failUnlessRaises(NoSelectableObject, |
324 self.failUnlessRaises(NoSelectableObject, |
307 self.vreg['views'].select, 'table', req, rset=rset) |
325 self.vreg['views'].select, 'table', req, rset=rset) |
308 # one entity |
326 # one entity |
309 rset, req = self.rset_and_req('CWGroup X WHERE X name "managers"') |
327 req = self.request() |
|
328 rset = req.execute('CWGroup X WHERE X name "managers"') |
310 self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset), |
329 self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset), |
311 primary.PrimaryView) |
330 primary.PrimaryView) |
312 self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset), |
331 self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset), |
313 baseviews.ListView) |
332 baseviews.ListView) |
314 self.assertIsInstance(self.vreg['views'].select('edition', req, rset=rset), |
333 self.assertIsInstance(self.vreg['views'].select('edition', req, rset=rset), |
318 self.failUnlessRaises(NoSelectableObject, |
337 self.failUnlessRaises(NoSelectableObject, |
319 self.vreg['views'].select, 'creation', req, rset=rset) |
338 self.vreg['views'].select, 'creation', req, rset=rset) |
320 self.failUnlessRaises(NoSelectableObject, |
339 self.failUnlessRaises(NoSelectableObject, |
321 self.vreg['views'].select, 'index', req, rset=rset) |
340 self.vreg['views'].select, 'index', req, rset=rset) |
322 # list of entities of the same type |
341 # list of entities of the same type |
323 rset, req = self.rset_and_req('CWGroup X') |
342 req = self.request() |
|
343 rset = req.execute('CWGroup X') |
324 self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset), |
344 self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset), |
325 primary.PrimaryView) |
345 primary.PrimaryView) |
326 self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset), |
346 self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset), |
327 baseviews.ListView) |
347 baseviews.ListView) |
328 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
348 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
329 tableview.TableView) |
349 tableview.TableView) |
330 self.failUnlessRaises(NoSelectableObject, |
350 self.failUnlessRaises(NoSelectableObject, |
331 self.vreg['views'].select, 'creation', req, rset=rset) |
351 self.vreg['views'].select, 'creation', req, rset=rset) |
332 # list of entities of different types |
352 # list of entities of different types |
333 rset, req = self.rset_and_req('Any X') |
353 req = self.request() |
|
354 rset = req.execute('Any X') |
334 self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset), |
355 self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset), |
335 primary.PrimaryView) |
356 primary.PrimaryView) |
336 self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset), |
357 self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset), |
337 baseviews.ListView) |
358 baseviews.ListView) |
338 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
359 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
340 self.failUnlessRaises(NoSelectableObject, |
361 self.failUnlessRaises(NoSelectableObject, |
341 self.vreg['views'].select, 'creation', req, rset=rset) |
362 self.vreg['views'].select, 'creation', req, rset=rset) |
342 self.failUnlessRaises(NoSelectableObject, |
363 self.failUnlessRaises(NoSelectableObject, |
343 self.vreg['views'].select, 'index', req, rset=rset) |
364 self.vreg['views'].select, 'index', req, rset=rset) |
344 # whatever |
365 # whatever |
345 rset, req = self.rset_and_req('Any N, X WHERE X in_group Y, Y name N') |
366 req = self.request() |
|
367 rset = req.execute('Any N, X WHERE X in_group Y, Y name N') |
346 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
368 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
347 tableview.TableView) |
369 tableview.TableView) |
348 self.failUnlessRaises(NoSelectableObject, |
370 self.failUnlessRaises(NoSelectableObject, |
349 self.vreg['views'].select, 'index', req, rset=rset) |
371 self.vreg['views'].select, 'index', req, rset=rset) |
350 self.failUnlessRaises(NoSelectableObject, |
372 self.failUnlessRaises(NoSelectableObject, |
354 self.failUnlessRaises(NoSelectableObject, |
376 self.failUnlessRaises(NoSelectableObject, |
355 self.vreg['views'].select, 'list', req, rset=rset) |
377 self.vreg['views'].select, 'list', req, rset=rset) |
356 self.failUnlessRaises(NoSelectableObject, |
378 self.failUnlessRaises(NoSelectableObject, |
357 self.vreg['views'].select, 'edition', req, rset=rset) |
379 self.vreg['views'].select, 'edition', req, rset=rset) |
358 # mixed query |
380 # mixed query |
359 rset, req = self.rset_and_req('Any U,G WHERE U is CWUser, G is CWGroup') |
381 req = self.request() |
|
382 rset = req.execute('Any U,G WHERE U is CWUser, G is CWGroup') |
360 self.failUnlessRaises(NoSelectableObject, |
383 self.failUnlessRaises(NoSelectableObject, |
361 self.vreg['views'].select, 'edition', req, rset=rset) |
384 self.vreg['views'].select, 'edition', req, rset=rset) |
362 self.failUnlessRaises(NoSelectableObject, |
385 self.failUnlessRaises(NoSelectableObject, |
363 self.vreg['views'].select, 'creation', req, rset=rset) |
386 self.vreg['views'].select, 'creation', req, rset=rset) |
364 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
387 self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset), |
365 tableview.TableView) |
388 tableview.TableView) |
366 |
389 |
367 def test_interface_selector(self): |
390 def test_interface_selector(self): |
368 image = self.add_entity('Image', name=u'bim.png', data=Binary('bim')) |
391 image = self.add_entity('Image', name=u'bim.png', data=Binary('bim')) |
369 # image primary view priority |
392 # image primary view priority |
370 rset, req = self.rset_and_req('Image X WHERE X name "bim.png"') |
393 req = self.request() |
|
394 rset = req.execute('Image X WHERE X name "bim.png"') |
371 self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset), |
395 self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset), |
372 idownloadable.IDownloadablePrimaryView) |
396 idownloadable.IDownloadablePrimaryView) |
373 |
397 |
374 |
398 |
375 def test_score_entity_selector(self): |
399 def test_score_entity_selector(self): |
376 image = self.add_entity('Image', name=u'bim.png', data=Binary('bim')) |
400 image = self.add_entity('Image', name=u'bim.png', data=Binary('bim')) |
377 # image primary view priority |
401 # image primary view priority |
378 rset, req = self.rset_and_req('Image X WHERE X name "bim.png"') |
402 req = self.request() |
|
403 rset = req.execute('Image X WHERE X name "bim.png"') |
379 self.assertIsInstance(self.vreg['views'].select('image', req, rset=rset), |
404 self.assertIsInstance(self.vreg['views'].select('image', req, rset=rset), |
380 idownloadable.ImageView) |
405 idownloadable.ImageView) |
381 fileobj = self.add_entity('File', name=u'bim.txt', data=Binary('bim')) |
406 fileobj = self.add_entity('File', name=u'bim.txt', data=Binary('bim')) |
382 # image primary view priority |
407 # image primary view priority |
383 rset, req = self.rset_and_req('File X WHERE X name "bim.txt"') |
408 req = self.request() |
|
409 rset = req.execute('File X WHERE X name "bim.txt"') |
384 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'image', req, rset=rset) |
410 self.assertRaises(NoSelectableObject, self.vreg['views'].select, 'image', req, rset=rset) |
385 |
411 |
386 |
412 |
387 |
413 |
388 def _test_view(self, vid, rql, args): |
414 def _test_view(self, vid, rql, args): |
389 if rql is None: |
415 if rql is None: |
390 rset = None |
416 rset = None |
391 req = self.request() |
417 req = self.request() |
392 else: |
418 else: |
393 rset, req = self.rset_and_req(rql) |
419 req = self.request() |
|
420 rset = req.execute(rql) |
394 try: |
421 try: |
395 self.vreg['views'].render(vid, req, rset=rset, **args) |
422 self.vreg['views'].render(vid, req, rset=rset, **args) |
396 except: |
423 except: |
397 print vid, rset, args |
424 print vid, rset, args |
398 raise |
425 raise |
441 def tearDown(self): |
468 def tearDown(self): |
442 super(RQLActionTC, self).tearDown() |
469 super(RQLActionTC, self).tearDown() |
443 del self.vreg['actions']['testaction'] |
470 del self.vreg['actions']['testaction'] |
444 |
471 |
445 def test(self): |
472 def test(self): |
446 rset, req = self.rset_and_req('CWEType X WHERE X name "CWEType"') |
473 req = self.request() |
|
474 rset = req.execute('CWEType X WHERE X name "CWEType"') |
447 self.assertDictEqual(self.pactions(req, rset), |
475 self.assertDictEqual(self.pactions(req, rset), |
448 {'useractions': USERACTIONS, |
476 {'useractions': USERACTIONS, |
449 'siteactions': SITEACTIONS, |
477 'siteactions': SITEACTIONS, |
450 'mainactions': [('edit', actions.ModifyAction)], |
478 'mainactions': [('edit', actions.ModifyAction)], |
451 'moreactions': [('managepermission', actions.ManagePermissionsAction), |
479 'moreactions': [('managepermission', actions.ManagePermissionsAction), |
453 ('delete', actions.DeleteAction), |
481 ('delete', actions.DeleteAction), |
454 ('copy', actions.CopyAction), |
482 ('copy', actions.CopyAction), |
455 ('testaction', CWETypeRQLAction), |
483 ('testaction', CWETypeRQLAction), |
456 ], |
484 ], |
457 }) |
485 }) |
458 rset, req = self.rset_and_req('CWEType X WHERE X name "CWRType"') |
486 req = self.request() |
|
487 rset = req.execute('CWEType X WHERE X name "CWRType"') |
459 self.assertDictEqual(self.pactions(req, rset), |
488 self.assertDictEqual(self.pactions(req, rset), |
460 {'useractions': USERACTIONS, |
489 {'useractions': USERACTIONS, |
461 'siteactions': SITEACTIONS, |
490 'siteactions': SITEACTIONS, |
462 'mainactions': [('edit', actions.ModifyAction)], |
491 'mainactions': [('edit', actions.ModifyAction)], |
463 'moreactions': [('managepermission', actions.ManagePermissionsAction), |
492 'moreactions': [('managepermission', actions.ManagePermissionsAction), |