9 |
9 |
10 from logilab.common.decorators import monkeypatch |
10 from logilab.common.decorators import monkeypatch |
11 from logilab.mtconverter import html_escape |
11 from logilab.mtconverter import html_escape |
12 |
12 |
13 from cubicweb import NoSelectableObject, role |
13 from cubicweb import NoSelectableObject, role |
|
14 from cubicweb.vregistry import objectify_selector |
14 from cubicweb.selectors import has_related_entities |
15 from cubicweb.selectors import has_related_entities |
15 from cubicweb.common.view import EntityView |
16 from cubicweb.common.view import EntityView |
16 from cubicweb.common.utils import HTMLHead |
17 from cubicweb.common.utils import HTMLHead |
17 from cubicweb.common.uilib import rql_for_eid |
18 from cubicweb.common.uilib import rql_for_eid |
18 |
19 |
141 Then, just define as below, and declare this being the tab content : |
142 Then, just define as below, and declare this being the tab content : |
142 |
143 |
143 class ProjectScreenshotTab(DataDependantTab, ProjectScreenshotsView): |
144 class ProjectScreenshotTab(DataDependantTab, ProjectScreenshotsView): |
144 id = 'screenshots_tab' |
145 id = 'screenshots_tab' |
145 """ |
146 """ |
146 __select__ = EntityView.__select__ & (has_related_entities,) |
147 # XXX needs to be generalized |
|
148 @objectify_selector |
|
149 def my_selector(cls, req, rset, row=None, col=0, **kwargs): |
|
150 selector = (EntityView.__select__ & |
|
151 has_related_entities(cls.rtype, role(cls))) |
|
152 return selector(cls, req, rset, row=None, col=0, **kwargs) |
|
153 |
|
154 __select__ = my_selector() |
147 vid = 'list' |
155 vid = 'list' |
148 |
156 |
149 def cell_call(self, row, col): |
157 def cell_call(self, row, col): |
150 rset = self.entity(row, col).related(self.rtype, role(self)) |
158 rset = self.entity(row, col).related(self.rtype, role(self)) |
151 self.w(u'<div class="mainInfo">') |
159 self.w(u'<div class="mainInfo">') |