common/view.py
changeset 361 5cd8bc047b52
parent 355 89ad20af9e4c
child 369 c8a6edc224bb
equal deleted inserted replaced
360:600dd2fe8b40 361:5cd8bc047b52
    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, nonempty_rset, 
    16 from cubicweb.common.selectors import (chainfirst, match_user_group, accept,
    17                                        empty_rset, accept_selector,
    17                                        nonempty_rset, empty_rset, none_rset)
    18                                        none_rset, chainfirst)
       
    19 from cubicweb.common.appobject import AppRsetObject, ComponentMixIn
    18 from cubicweb.common.appobject import AppRsetObject, ComponentMixIn
    20 from cubicweb.common.utils import UStringIO, HTMLStream
    19 from cubicweb.common.utils import UStringIO, HTMLStream
    21 
    20 
    22 _ = unicode
    21 _ = unicode
    23 
    22 
   298 
   297 
   299 class EntityView(View):
   298 class EntityView(View):
   300     """base class for views applying on an entity (i.e. uniform result set)
   299     """base class for views applying on an entity (i.e. uniform result set)
   301     """
   300     """
   302     __registerer__ = accepts_registerer
   301     __registerer__ = accepts_registerer
   303     __selectors__ = (accept_selector,)
   302     __selectors__ = (accept,)
   304     category = 'entityview'
   303     category = 'entityview'
   305     
   304     
   306     def field(self, label, value, row=True, show_label=True, w=None, tr=True):
   305     def field(self, label, value, row=True, show_label=True, w=None, tr=True):
   307         """ read-only field """
   306         """ read-only field """
   308         if w is None:
   307         if w is None:
   321 class StartupView(View):
   320 class StartupView(View):
   322     """base class for views which doesn't need a particular result set
   321     """base class for views which doesn't need a particular result set
   323     to be displayed (so they can always be displayed !)
   322     to be displayed (so they can always be displayed !)
   324     """
   323     """
   325     __registerer__ = priority_registerer
   324     __registerer__ = priority_registerer
   326     __selectors__ = (in_group_selector, none_rset)
   325     __selectors__ = (match_user_group, none_rset)
   327     require_groups = ()
   326     require_groups = ()
   328     category = 'startupview'
   327     category = 'startupview'
   329     
   328     
   330     def url(self):
   329     def url(self):
   331         """return the url associated with this view. We can omit rql here"""
   330         """return the url associated with this view. We can omit rql here"""
   343 class EntityStartupView(EntityView):
   342 class EntityStartupView(EntityView):
   344     """base class for entity views which may also be applied to None
   343     """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)
   344     result set (usually a default rql is provided by the view class)
   346     """
   345     """
   347     __registerer__ = accepts_registerer
   346     __registerer__ = accepts_registerer
   348     __selectors__ = (chainfirst(none_rset, accept_selector),)
   347     __selectors__ = (chainfirst(none_rset, accept),)
   349     
   348     
   350     default_rql = None
   349     default_rql = None
   351     
   350     
   352     def __init__(self, req, rset):
   351     def __init__(self, req, rset):
   353         super(EntityStartupView, self).__init__(req, rset)
   352         super(EntityStartupView, self).__init__(req, rset)
   398     """a template is almost like a view, except that by default a template
   397     """a template is almost like a view, except that by default a template
   399     is only used globally (i.e. no result set adaptation)
   398     is only used globally (i.e. no result set adaptation)
   400     """
   399     """
   401     __registry__ = 'templates'
   400     __registry__ = 'templates'
   402     __registerer__ = priority_registerer
   401     __registerer__ = priority_registerer
   403     __selectors__ = (in_group_selector,)
   402     __selectors__ = (match_user_group,)
   404 
   403 
   405     require_groups = ()
   404     require_groups = ()
   406     
   405     
   407     def template(self, oid, **kwargs):
   406     def template(self, oid, **kwargs):
   408         """shortcut to self.registry.render method on the templates registry"""
   407         """shortcut to self.registry.render method on the templates registry"""