view.py
branchtls-sprint
changeset 707 21a59b468f1a
parent 700 a2471775aef6
child 708 b4728112625f
equal deleted inserted replaced
706:8be68582abb0 707:21a59b468f1a
    13 
    13 
    14 from cubicweb import NotAnEntity, NoSelectableObject
    14 from cubicweb import NotAnEntity, NoSelectableObject
    15 from cubicweb.selectors import (yes, match_user_groups, implements,
    15 from cubicweb.selectors import (yes, match_user_groups, implements,
    16                                 nonempty_rset, none_rset)
    16                                 nonempty_rset, none_rset)
    17 from cubicweb.selectors import require_group_compat, accepts_compat
    17 from cubicweb.selectors import require_group_compat, accepts_compat
       
    18 from cubicweb.appobject import AppRsetObject
    18 from cubicweb.common.registerers import accepts_registerer, priority_registerer, yes_registerer
    19 from cubicweb.common.registerers import accepts_registerer, priority_registerer, yes_registerer
    19 from cubicweb.common.appobject import AppRsetObject
       
    20 from cubicweb.common.utils import UStringIO, HTMLStream
    20 from cubicweb.common.utils import UStringIO, HTMLStream
    21 
    21 
    22 _ = unicode
    22 _ = unicode
    23 
    23 
    24 
    24 
   319 class EntityView(View):
   319 class EntityView(View):
   320     """base class for views applying on an entity (i.e. uniform result set)
   320     """base class for views applying on an entity (i.e. uniform result set)
   321     """
   321     """
   322     # XXX deprecate
   322     # XXX deprecate
   323     __registerer__ = accepts_registerer
   323     __registerer__ = accepts_registerer
   324     __selectors__ = (implements('Any'),)
   324     __select__ = implements('Any')
   325     registered = accepts_compat(View.registered.im_func)
   325     registered = accepts_compat(View.registered.im_func)
   326 
   326 
   327     category = 'entityview'
   327     category = 'entityview'
   328 
   328 
   329 
   329 
   330 class StartupView(View):
   330 class StartupView(View):
   331     """base class for views which doesn't need a particular result set
   331     """base class for views which doesn't need a particular result set
   332     to be displayed (so they can always be displayed !)
   332     to be displayed (so they can always be displayed !)
   333     """
   333     """
   334     __registerer__ = priority_registerer
   334     __registerer__ = priority_registerer
   335     __selectors__ = (none_rset,)
   335     __select__ = none_rset()
   336     registered = require_group_compat(View.registered.im_func)
   336     registered = require_group_compat(View.registered.im_func)
   337     
   337     
   338     category = 'startupview'
   338     category = 'startupview'
   339     
   339     
   340     def url(self):
   340     def url(self):
   352 
   352 
   353 class EntityStartupView(EntityView):
   353 class EntityStartupView(EntityView):
   354     """base class for entity views which may also be applied to None
   354     """base class for entity views which may also be applied to None
   355     result set (usually a default rql is provided by the view class)
   355     result set (usually a default rql is provided by the view class)
   356     """
   356     """
   357     __selectors__ = ((none_rset | implements('Any')),)
   357     __select__ = none_rset() | implements('Any')
   358 
   358 
   359     default_rql = None
   359     default_rql = None
   360 
   360 
   361     def __init__(self, req, rset):
   361     def __init__(self, req, rset):
   362         super(EntityStartupView, self).__init__(req, rset)
   362         super(EntityStartupView, self).__init__(req, rset)
   387         return super(EntityStartupView, self).url()
   387         return super(EntityStartupView, self).url()
   388 
   388 
   389 
   389 
   390 class AnyRsetView(View):
   390 class AnyRsetView(View):
   391     """base class for views applying on any non empty result sets"""
   391     """base class for views applying on any non empty result sets"""
   392     __selectors__ = (nonempty_rset,)
   392     __select__ = nonempty_rset()
   393 
   393 
   394     category = 'anyrsetview'
   394     category = 'anyrsetview'
   395 
   395 
   396     def columns_labels(self, tr=True):
   396     def columns_labels(self, tr=True):
   397         if tr:
   397         if tr:
   416 class Template(View):
   416 class Template(View):
   417     """a template is almost like a view, except that by default a template
   417     """a template is almost like a view, except that by default a template
   418     is only used globally (i.e. no result set adaptation)
   418     is only used globally (i.e. no result set adaptation)
   419     """
   419     """
   420     __registry__ = 'templates'
   420     __registry__ = 'templates'
   421     __selectors__ = (yes,)
   421     __select__ = yes()
   422 
   422 
   423     registered = require_group_compat(View.registered.im_func)
   423     registered = require_group_compat(View.registered.im_func)
   424 
   424 
   425     def template(self, oid, **kwargs):
   425     def template(self, oid, **kwargs):
   426         """shortcut to self.registry.render method on the templates registry"""
   426         """shortcut to self.registry.render method on the templates registry"""
   499 
   499 
   500 class Component(ReloadableMixIn, View):
   500 class Component(ReloadableMixIn, View):
   501     """base class for components"""
   501     """base class for components"""
   502     __registry__ = 'components'
   502     __registry__ = 'components'
   503     __registerer__ = yes_registerer
   503     __registerer__ = yes_registerer
   504     __selectors__ = (yes,)
   504     __select__ = yes()
   505     property_defs = {
   505     property_defs = {
   506         _('visible'):  dict(type='Boolean', default=True,
   506         _('visible'):  dict(type='Boolean', default=True,
   507                             help=_('display the box or not')),
   507                             help=_('display the box or not')),
   508         }    
   508         }    
   509 
   509