common/view.py
changeset 237 3df2e0ae2eba
parent 0 b97547f5f1fa
child 354 2dd04e5bd38a
equal deleted inserted replaced
236:8ab9e72dd8f1 237:3df2e0ae2eba
    11 
    11 
    12 from logilab.mtconverter import html_escape
    12 from logilab.mtconverter import html_escape
    13 
    13 
    14 from cubicweb import NotAnEntity, NoSelectableObject
    14 from cubicweb import NotAnEntity, NoSelectableObject
    15 from cubicweb.common.registerers import accepts_registerer, priority_registerer
    15 from cubicweb.common.registerers import accepts_registerer, priority_registerer
    16 from cubicweb.common.selectors import (in_group_selector, anyrset_selector, 
    16 from cubicweb.common.selectors import (in_group_selector, nonempty_rset, 
    17                                     emptyrset_selector, accept_selector,
    17                                        empty_rset, accept_selector,
    18                                     norset_selector, chainfirst)
    18                                        none_rset, chainfirst)
    19 from cubicweb.common.appobject import AppRsetObject, ComponentMixIn
    19 from cubicweb.common.appobject import AppRsetObject, ComponentMixIn
    20 from cubicweb.common.utils import UStringIO, HTMLStream
    20 from cubicweb.common.utils import UStringIO, HTMLStream
    21 
    21 
    22 _ = unicode
    22 _ = unicode
    23 
    23 
   321 class StartupView(View):
   321 class StartupView(View):
   322     """base class for views which doesn't need a particular result set
   322     """base class for views which doesn't need a particular result set
   323     to be displayed (so they can always be displayed !)
   323     to be displayed (so they can always be displayed !)
   324     """
   324     """
   325     __registerer__ = priority_registerer
   325     __registerer__ = priority_registerer
   326     __selectors__ = (in_group_selector, norset_selector)
   326     __selectors__ = (in_group_selector, none_rset)
   327     require_groups = ()
   327     require_groups = ()
   328     category = 'startupview'
   328     category = 'startupview'
   329     
   329     
   330     def url(self):
   330     def url(self):
   331         """return the url associated with this view. We can omit rql here"""
   331         """return the url associated with this view. We can omit rql here"""
   343 class EntityStartupView(EntityView):
   343 class EntityStartupView(EntityView):
   344     """base class for entity views which may also be applied to None
   344     """base class for entity views which may also be applied to None
   345     result set (usually a default rql is provided by the view class)
   345     result set (usually a default rql is provided by the view class)
   346     """
   346     """
   347     __registerer__ = accepts_registerer
   347     __registerer__ = accepts_registerer
   348     __selectors__ = (chainfirst(norset_selector, accept_selector),)
   348     __selectors__ = (chainfirst(none_rset, accept_selector),)
   349     
   349     
   350     default_rql = None
   350     default_rql = None
   351     
   351     
   352     def __init__(self, req, rset):
   352     def __init__(self, req, rset):
   353         super(EntityStartupView, self).__init__(req, rset)
   353         super(EntityStartupView, self).__init__(req, rset)
   379 
   379 
   380     
   380     
   381 class AnyRsetView(View):
   381 class AnyRsetView(View):
   382     """base class for views applying on any non empty result sets"""
   382     """base class for views applying on any non empty result sets"""
   383     __registerer__ = priority_registerer
   383     __registerer__ = priority_registerer
   384     __selectors__ = (anyrset_selector,)
   384     __selectors__ = (nonempty_rset,)
   385     
   385     
   386     category = 'anyrsetview'
   386     category = 'anyrsetview'
   387     
   387     
   388 
   388 
   389 class EmptyRsetView(View):
   389 class EmptyRsetView(View):
   390     """base class for views applying on any empty result sets"""
   390     """base class for views applying on any empty result sets"""
   391     __registerer__ = priority_registerer
   391     __registerer__ = priority_registerer
   392     __selectors__ = (emptyrset_selector,)
   392     __selectors__ = (empty_rset,)
   393 
   393 
   394 
   394 
   395 # concrete template base classes ##############################################
   395 # concrete template base classes ##############################################
   396 
   396 
   397 class Template(View):
   397 class Template(View):