equal
deleted
inserted
replaced
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): |