8 |
8 |
9 from logilab.common.decorators import cached |
9 from logilab.common.decorators import cached |
10 from logilab.mtconverter import html_escape |
10 from logilab.mtconverter import html_escape |
11 |
11 |
12 from cubicweb import Unauthorized, role as get_role |
12 from cubicweb import Unauthorized, role as get_role |
13 from cubicweb.vregistry import objectify_selector |
|
14 from cubicweb.selectors import (one_line_rset, primary_view, |
13 from cubicweb.selectors import (one_line_rset, primary_view, |
15 match_context_prop, has_related_entities, |
14 match_context_prop, abstract_has_related_entities, |
16 accepts_compat, has_relation_compat, condition_compat) |
15 accepts_compat, has_relation_compat, condition_compat) |
17 from cubicweb.view import Template, ReloadableMixIn |
16 from cubicweb.view import Template, ReloadableMixIn |
18 |
17 |
19 from cubicweb.web.htmlwidgets import (BoxLink, BoxWidget, SideBoxWidget, |
18 from cubicweb.web.htmlwidgets import (BoxLink, BoxWidget, SideBoxWidget, |
20 RawBoxItem, BoxSeparator) |
19 RawBoxItem, BoxSeparator) |
144 """classes inheriting from EntityBoxTemplate should define cell_call""" |
143 """classes inheriting from EntityBoxTemplate should define cell_call""" |
145 self.cell_call(row, col, **kwargs) |
144 self.cell_call(row, col, **kwargs) |
146 |
145 |
147 |
146 |
148 class RelatedEntityBoxTemplate(EntityBoxTemplate): |
147 class RelatedEntityBoxTemplate(EntityBoxTemplate): |
149 # XXX find a way to generalize access to cls.rtype |
148 __select__ = EntityBoxTemplate.__select__ & abstract_has_related_entities() |
150 @objectify_selector |
|
151 def my_selector(cls, req, rset, row=None, col=0, **kwargs): |
|
152 return EntityBoxTemplate.__select__ & has_related_entities(cls.rtype) |
|
153 |
|
154 __select__ = my_selector |
|
155 |
149 |
156 def cell_call(self, row, col, **kwargs): |
150 def cell_call(self, row, col, **kwargs): |
157 entity = self.entity(row, col) |
151 entity = self.entity(row, col) |
158 limit = self.req.property_value('navigation.related-limit') + 1 |
152 limit = self.req.property_value('navigation.related-limit') + 1 |
159 role = get_role(self) |
153 role = get_role(self) |