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 |