diff -r 39721e56b56d -r 99115e029dca web/box.py --- a/web/box.py Wed Feb 18 00:48:24 2009 +0100 +++ b/web/box.py Wed Feb 18 01:21:25 2009 +0100 @@ -10,6 +10,7 @@ from logilab.mtconverter import html_escape from cubicweb import Unauthorized, role as get_role +from cubicweb.vregistry import objectify_selector from cubicweb.selectors import (one_line_rset, primary_view, match_context_prop, has_related_entities, accepts_compat, condition_compat) @@ -39,7 +40,7 @@ box.render(self.w) """ __registry__ = 'boxes' - __selectors__ = Template.__selectors__ + (match_context_prop,) + __select__ = Template.__select__ & match_context_prop() categories_in_order = () property_defs = { @@ -139,9 +140,7 @@ class EntityBoxTemplate(BoxTemplate): """base class for boxes related to a single entity""" __registerer__ = accepts_registerer - __selectors__ = (one_line_rset, primary_view, - match_context_prop,) - #etype_rtype_selector, has_relation) + __select__ = one_line_rset() & primary_view() & match_context_prop() registered = accepts_compat(condition_compat(BoxTemplate.registered)) context = 'incontext' @@ -151,8 +150,13 @@ class RelatedEntityBoxTemplate(EntityBoxTemplate): - __selectors__ = EntityBoxTemplate.__selectors__ + (has_related_entities,) - + # XXX find a way to generalize access to cls.rtype + @objectify_selector + def my_selector(cls, req, rset, row=None, col=0, **kwargs): + return EntityBoxTemplate.__select__ & has_related_entities(cls.rtype) + + __select__ = my_selector + def cell_call(self, row, col, **kwargs): entity = self.entity(row, col) limit = self.req.property_value('navigation.related-limit') + 1