# HG changeset patch # User Sylvain Thénault # Date 1284471389 -7200 # Node ID d5f7bd1022822fe6d8a8510771f700e28c3a3c72 # Parent ae97a8c818e5c33599701a1cfea599a29ed73361 [primary view] properly handle case where view specified in pvdc['vid'] isn't selectable diff -r ae97a8c818e5 -r d5f7bd102282 web/views/primary.py --- a/web/views/primary.py Tue Sep 14 15:35:42 2010 +0200 +++ b/web/views/primary.py Tue Sep 14 15:36:29 2010 +0200 @@ -24,7 +24,7 @@ from logilab.mtconverter import xml_escape -from cubicweb import Unauthorized +from cubicweb import Unauthorized, NoSelectableObject from cubicweb.selectors import match_kwargs from cubicweb.view import EntityView from cubicweb.schema import VIRTUAL_RTYPES, display_name @@ -155,13 +155,19 @@ def render_entity_relations(self, entity): for rschema, tschemas, role, dispctrl in self._section_def(entity, 'relations'): if rschema.final or dispctrl.get('rtypevid'): + vid = dispctrl.get('vid', 'reledit') + try: + rview = self._cw.vreg['views'].select( + vid, self._cw, rset=entity.cw_rset, row=entity.cw_row, + col=entity.cw_col, dispctrl=dispctrl) + except NoSelectableObject: + continue self.w(u'
') label = self._rel_label(entity, rschema, role, dispctrl) if label: self.w(u'

%s

' % label) - vid = dispctrl.get('vid', 'reledit') - entity.view(vid, rtype=rschema.type, role=role, w=self.w, - initargs={'dispctrl': dispctrl}) + rview.render(row=entity.cw_row, col=entity.cw_col, w=self.w, + rtype=rschema.type, role=role) self.w(u'
') continue rset = self._relation_rset(entity, rschema, role, dispctrl)