web/test/unittest_viewselector.py
changeset 7992 4ff9f25cb06e
parent 7845 2172978be237
child 7994 af3fb709c061
equal deleted inserted replaced
7991:dcc5a4d48122 7992:4ff9f25cb06e
    29 from cubicweb.web.action import Action
    29 from cubicweb.web.action import Action
    30 from cubicweb.web.views import (
    30 from cubicweb.web.views import (
    31     primary, baseviews, tableview, editforms, calendar, management, embedding,
    31     primary, baseviews, tableview, editforms, calendar, management, embedding,
    32     actions, startup, cwuser, schema, xbel, vcard, owl, treeview, idownloadable,
    32     actions, startup, cwuser, schema, xbel, vcard, owl, treeview, idownloadable,
    33     wdoc, debug, cwuser, cwproperties, cwsources, workflow, xmlrss, rdf,
    33     wdoc, debug, cwuser, cwproperties, cwsources, workflow, xmlrss, rdf,
    34     csvexport)
    34     csvexport, json)
    35 
    35 
    36 from cubes.folder import views as folderviews
    36 from cubes.folder import views as folderviews
    37 
    37 
    38 USERACTIONS = [actions.UserPreferencesAction,
    38 USERACTIONS = [actions.UserPreferencesAction,
    39                actions.UserInfoAction,
    39                actions.UserInfoAction,
   115         req = self.request()
   115         req = self.request()
   116         rset = req.execute('CWGroup X WHERE X name "managers"')
   116         rset = req.execute('CWGroup X WHERE X name "managers"')
   117         self.assertListEqual(self.pviews(req, rset),
   117         self.assertListEqual(self.pviews(req, rset),
   118                              [('csvexport', csvexport.CSVRsetView),
   118                              [('csvexport', csvexport.CSVRsetView),
   119                               ('ecsvexport', csvexport.CSVEntityView),
   119                               ('ecsvexport', csvexport.CSVEntityView),
   120                               ('editable-table', tableview.EditableTableView),
   120                               ('ejsonexport', json.JsonEntityView),
   121                               ('filetree', treeview.FileTreeView),
   121                               ('filetree', treeview.FileTreeView),
       
   122                               ('jsonexport', json.JsonRsetView),
   122                               ('list', baseviews.ListView),
   123                               ('list', baseviews.ListView),
   123                               ('oneline', baseviews.OneLineView),
   124                               ('oneline', baseviews.OneLineView),
   124                               ('owlabox', owl.OWLABOXView),
   125                               ('owlabox', owl.OWLABOXView),
   125                               ('primary', cwuser.CWGroupPrimaryView)] + RDFVIEWS + [
   126                               ('primary', cwuser.CWGroupPrimaryView)] + RDFVIEWS + [
   126                               ('rsetxml', xmlrss.XMLRsetView),
   127                               ('rsetxml', xmlrss.XMLRsetView),
   127                               ('rss', xmlrss.RSSView),
   128                               ('rss', xmlrss.RSSView),
   128                               ('sameetypelist', baseviews.SameETypeListView),
   129                               ('sameetypelist', baseviews.SameETypeListView),
   129                               ('security', management.SecurityManagementView),
   130                               ('security', management.SecurityManagementView),
   130                               ('table', tableview.TableView),
   131                               ('table', tableview.RsetTableView),
   131                               ('text', baseviews.TextView),
   132                               ('text', baseviews.TextView),
   132                               ('treeview', treeview.TreeView),
   133                               ('treeview', treeview.TreeView),
   133                               ('xbel', xbel.XbelView),
   134                               ('xbel', xbel.XbelView),
   134                               ('xml', xmlrss.XMLView),
   135                               ('xml', xmlrss.XMLView),
   135                               ])
   136                               ])
   138         req = self.request()
   139         req = self.request()
   139         rset = req.execute('CWGroup X')
   140         rset = req.execute('CWGroup X')
   140         self.assertListEqual(self.pviews(req, rset),
   141         self.assertListEqual(self.pviews(req, rset),
   141                              [('csvexport', csvexport.CSVRsetView),
   142                              [('csvexport', csvexport.CSVRsetView),
   142                               ('ecsvexport', csvexport.CSVEntityView),
   143                               ('ecsvexport', csvexport.CSVEntityView),
   143                               ('editable-table', tableview.EditableTableView),
   144                               ('ejsonexport', json.JsonEntityView),
   144                               ('filetree', treeview.FileTreeView),
   145                               ('filetree', treeview.FileTreeView),
       
   146                               ('jsonexport', json.JsonRsetView),
   145                               ('list', baseviews.ListView),
   147                               ('list', baseviews.ListView),
   146                               ('oneline', baseviews.OneLineView),
   148                               ('oneline', baseviews.OneLineView),
   147                               ('owlabox', owl.OWLABOXView),
   149                               ('owlabox', owl.OWLABOXView),
   148                               ('primary', cwuser.CWGroupPrimaryView)] + RDFVIEWS + [
   150                               ('primary', cwuser.CWGroupPrimaryView)] + RDFVIEWS + [
   149                               ('rsetxml', xmlrss.XMLRsetView),
   151                               ('rsetxml', xmlrss.XMLRsetView),
   150                               ('rss', xmlrss.RSSView),
   152                               ('rss', xmlrss.RSSView),
   151                               ('sameetypelist', baseviews.SameETypeListView),
   153                               ('sameetypelist', baseviews.SameETypeListView),
   152                               ('security', management.SecurityManagementView),
   154                               ('security', management.SecurityManagementView),
   153                               ('table', tableview.TableView),
   155                               ('table', tableview.RsetTableView),
   154                               ('text', baseviews.TextView),
   156                               ('text', baseviews.TextView),
   155                               ('treeview', treeview.TreeView),
   157                               ('treeview', treeview.TreeView),
   156                               ('xbel', xbel.XbelView),
   158                               ('xbel', xbel.XbelView),
   157                               ('xml', xmlrss.XMLView),
   159                               ('xml', xmlrss.XMLView),
   158                               ])
   160                               ])
   192         req = self.request()
   194         req = self.request()
   193         rset = req.execute('Any X')
   195         rset = req.execute('Any X')
   194         self.assertListEqual(self.pviews(req, rset),
   196         self.assertListEqual(self.pviews(req, rset),
   195                              [('csvexport', csvexport.CSVRsetView),
   197                              [('csvexport', csvexport.CSVRsetView),
   196                               ('ecsvexport', csvexport.CSVEntityView),
   198                               ('ecsvexport', csvexport.CSVEntityView),
   197                               ('editable-table', tableview.EditableTableView),
   199                               ('ejsonexport', json.JsonEntityView),
   198                               ('filetree', treeview.FileTreeView),
   200                               ('filetree', treeview.FileTreeView),
       
   201                               ('jsonexport', json.JsonRsetView),
   199                               ('list', baseviews.ListView),
   202                               ('list', baseviews.ListView),
   200                               ('oneline', baseviews.OneLineView),
   203                               ('oneline', baseviews.OneLineView),
   201                               ('owlabox', owl.OWLABOXView),
   204                               ('owlabox', owl.OWLABOXView),
   202                               ('primary', primary.PrimaryView),] + RDFVIEWS + [
   205                               ('primary', primary.PrimaryView),] + RDFVIEWS + [
   203                               ('rsetxml', xmlrss.XMLRsetView),
   206                               ('rsetxml', xmlrss.XMLRsetView),
   204                               ('rss', xmlrss.RSSView),
   207                               ('rss', xmlrss.RSSView),
   205                               ('security', management.SecurityManagementView),
   208                               ('security', management.SecurityManagementView),
   206                               ('table', tableview.TableView),
   209                               ('table', tableview.RsetTableView),
   207                               ('text', baseviews.TextView),
   210                               ('text', baseviews.TextView),
   208                               ('treeview', treeview.TreeView),
   211                               ('treeview', treeview.TreeView),
   209                               ('xbel', xbel.XbelView),
   212                               ('xbel', xbel.XbelView),
   210                               ('xml', xmlrss.XMLView),
   213                               ('xml', xmlrss.XMLView),
   211                               ])
   214                               ])
   213     def test_possible_views_any_rset(self):
   216     def test_possible_views_any_rset(self):
   214         req = self.request()
   217         req = self.request()
   215         rset = req.execute('Any N, X WHERE X in_group Y, Y name N')
   218         rset = req.execute('Any N, X WHERE X in_group Y, Y name N')
   216         self.assertListEqual(self.pviews(req, rset),
   219         self.assertListEqual(self.pviews(req, rset),
   217                              [('csvexport', csvexport.CSVRsetView),
   220                              [('csvexport', csvexport.CSVRsetView),
   218                               ('editable-table', tableview.EditableTableView),
   221                               ('jsonexport', json.JsonRsetView),
   219                               ('rsetxml', xmlrss.XMLRsetView),
   222                               ('rsetxml', xmlrss.XMLRsetView),
   220                               ('table', tableview.TableView),
   223                               ('table', tableview.RsetTableView),
   221                               ])
   224                               ])
   222 
   225 
   223     def test_possible_views_multiple_eusers(self):
   226     def test_possible_views_multiple_eusers(self):
   224         req = self.request()
   227         req = self.request()
   225         rset = req.execute('CWUser X')
   228         rset = req.execute('CWUser X')
   226         self.assertListEqual(self.pviews(req, rset),
   229         self.assertListEqual(self.pviews(req, rset),
   227                              [('csvexport', csvexport.CSVRsetView),
   230                              [('csvexport', csvexport.CSVRsetView),
   228                               ('cw.users-table', cwuser.CWUsersTable),
       
   229                               ('ecsvexport', csvexport.CSVEntityView),
   231                               ('ecsvexport', csvexport.CSVEntityView),
   230                               ('editable-table', tableview.EditableTableView),
   232                               ('ejsonexport', json.JsonEntityView),
   231                               ('filetree', treeview.FileTreeView),
   233                               ('filetree', treeview.FileTreeView),
   232                               ('foaf', cwuser.FoafView),
   234                               ('foaf', cwuser.FoafView),
       
   235                               ('jsonexport', json.JsonRsetView),
   233                               ('list', baseviews.ListView),
   236                               ('list', baseviews.ListView),
   234                               ('oneline', baseviews.OneLineView),
   237                               ('oneline', baseviews.OneLineView),
   235                               ('owlabox', owl.OWLABOXView),
   238                               ('owlabox', owl.OWLABOXView),
   236                               ('primary', primary.PrimaryView)] + RDFVIEWS + [
   239                               ('primary', primary.PrimaryView)] + RDFVIEWS + [
   237                               ('rsetxml', xmlrss.XMLRsetView),
   240                               ('rsetxml', xmlrss.XMLRsetView),
   238                               ('rss', xmlrss.RSSView),
   241                               ('rss', xmlrss.RSSView),
   239                               ('sameetypelist', baseviews.SameETypeListView),
   242                               ('sameetypelist', baseviews.SameETypeListView),
   240                               ('security', management.SecurityManagementView),
   243                               ('security', management.SecurityManagementView),
   241                               ('table', tableview.TableView),
   244                               ('table', tableview.RsetTableView),
   242                               ('text', baseviews.TextView),
   245                               ('text', baseviews.TextView),
   243                               ('treeview', treeview.TreeView),
   246                               ('treeview', treeview.TreeView),
   244                               ('vcard', vcard.VCardCWUserView),
   247                               ('vcard', vcard.VCardCWUserView),
   245                               ('xbel', xbel.XbelView),
   248                               ('xbel', xbel.XbelView),
   246                               ('xml', xmlrss.XMLView),
   249                               ('xml', xmlrss.XMLView),
   364         self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset),
   367         self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset),
   365                              baseviews.ListView)
   368                              baseviews.ListView)
   366         self.assertIsInstance(self.vreg['views'].select('edition', req, rset=rset),
   369         self.assertIsInstance(self.vreg['views'].select('edition', req, rset=rset),
   367                              editforms.EditionFormView)
   370                              editforms.EditionFormView)
   368         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   371         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   369                              tableview.TableView)
   372                              tableview.RsetTableView)
   370         self.assertRaises(NoSelectableObject,
   373         self.assertRaises(NoSelectableObject,
   371                               self.vreg['views'].select, 'creation', req, rset=rset)
   374                               self.vreg['views'].select, 'creation', req, rset=rset)
   372         self.assertRaises(NoSelectableObject,
   375         self.assertRaises(NoSelectableObject,
   373                               self.vreg['views'].select, 'index', req, rset=rset)
   376                               self.vreg['views'].select, 'index', req, rset=rset)
   374         # list of entities of the same type
   377         # list of entities of the same type
   377         self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset),
   380         self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset),
   378                              primary.PrimaryView)
   381                              primary.PrimaryView)
   379         self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset),
   382         self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset),
   380                              baseviews.ListView)
   383                              baseviews.ListView)
   381         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   384         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   382                              tableview.TableView)
   385                              tableview.RsetTableView)
   383         self.assertRaises(NoSelectableObject,
   386         self.assertRaises(NoSelectableObject,
   384                               self.vreg['views'].select, 'creation', req, rset=rset)
   387                               self.vreg['views'].select, 'creation', req, rset=rset)
   385         # list of entities of different types
   388         # list of entities of different types
   386         req = self.request()
   389         req = self.request()
   387         rset = req.execute('Any X')
   390         rset = req.execute('Any X')
   388         self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset),
   391         self.assertIsInstance(self.vreg['views'].select('primary', req, rset=rset),
   389                                   primary.PrimaryView)
   392                                   primary.PrimaryView)
   390         self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset),
   393         self.assertIsInstance(self.vreg['views'].select('list', req, rset=rset),
   391                                   baseviews.ListView)
   394                                   baseviews.ListView)
   392         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   395         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   393                                   tableview.TableView)
   396                                   tableview.RsetTableView)
   394         self.assertRaises(NoSelectableObject,
   397         self.assertRaises(NoSelectableObject,
   395                              self.vreg['views'].select, 'creation', req, rset=rset)
   398                              self.vreg['views'].select, 'creation', req, rset=rset)
   396         self.assertRaises(NoSelectableObject,
   399         self.assertRaises(NoSelectableObject,
   397                               self.vreg['views'].select, 'index', req, rset=rset)
   400                               self.vreg['views'].select, 'index', req, rset=rset)
   398         # whatever
   401         # whatever
   399         req = self.request()
   402         req = self.request()
   400         rset = req.execute('Any N, X WHERE X in_group Y, Y name N')
   403         rset = req.execute('Any N, X WHERE X in_group Y, Y name N')
   401         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   404         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   402                                   tableview.TableView)
   405                                   tableview.RsetTableView)
   403         self.assertRaises(NoSelectableObject,
   406         self.assertRaises(NoSelectableObject,
   404                               self.vreg['views'].select, 'index', req, rset=rset)
   407                               self.vreg['views'].select, 'index', req, rset=rset)
   405         self.assertRaises(NoSelectableObject,
   408         self.assertRaises(NoSelectableObject,
   406                               self.vreg['views'].select, 'creation', req, rset=rset)
   409                               self.vreg['views'].select, 'creation', req, rset=rset)
   407         self.assertRaises(NoSelectableObject,
   410         self.assertRaises(NoSelectableObject,
   416         self.assertRaises(NoSelectableObject,
   419         self.assertRaises(NoSelectableObject,
   417                               self.vreg['views'].select, 'edition', req, rset=rset)
   420                               self.vreg['views'].select, 'edition', req, rset=rset)
   418         self.assertRaises(NoSelectableObject,
   421         self.assertRaises(NoSelectableObject,
   419                               self.vreg['views'].select, 'creation', req, rset=rset)
   422                               self.vreg['views'].select, 'creation', req, rset=rset)
   420         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   423         self.assertIsInstance(self.vreg['views'].select('table', req, rset=rset),
   421                               tableview.TableView)
   424                               tableview.RsetTableView)
   422 
   425 
   423     def test_interface_selector(self):
   426     def test_interface_selector(self):
   424         image = self.request().create_entity('File', data_name=u'bim.png', data=Binary('bim'))
   427         image = self.request().create_entity('File', data_name=u'bim.png', data=Binary('bim'))
   425         # image primary view priority
   428         # image primary view priority
   426         req = self.request()
   429         req = self.request()