web/views/primary.py
changeset 6366 1806148d6ce8
parent 6333 e3994fcc21c3
parent 6335 d13d488a453e
child 6371 9af007a3acb9
equal deleted inserted replaced
6333:e3994fcc21c3 6366:1806148d6ce8
   143         if display_attributes:
   143         if display_attributes:
   144             self.w(u'<table>')
   144             self.w(u'<table>')
   145             for rschema, role, dispctrl, value in display_attributes:
   145             for rschema, role, dispctrl, value in display_attributes:
   146                 if support_args(self._render_attribute, 'label'):
   146                 if support_args(self._render_attribute, 'label'):
   147                     label = self._rel_label(entity, rschema, role, dispctrl)
   147                     label = self._rel_label(entity, rschema, role, dispctrl)
   148                     self._render_attribute(label, value, table=True)
   148                     self.render_attribute(label, value, table=True)
   149                 elif support_args(self._render_attribute, 'dispctrl'):
   149                 elif support_args(self._render_attribute, 'dispctrl'):
   150                     warn('[3.10] _render_attribute prototype has changed, please'
   150                     warn('[3.9] _render_attribute prototype has changed and '
   151                          ' update %s' % self.__class___, DeprecationWarning)
   151                          'renamed to render_attribute, please update %s'
       
   152                          % self.__class___, DeprecationWarning)
   152                     self._render_attribute(dispctrl, rschema, value, role=role,
   153                     self._render_attribute(dispctrl, rschema, value, role=role,
   153                                            table=True)
   154                                            table=True)
   154                 else:
   155                 else:
   155                     warn('[3.6] _render_attribute prototype has changed, please'
       
   156                          ' update %s' % self.__class___, DeprecationWarning)
       
   157                     self._render_attribute(rschema, value, role=role, table=True)
   156                     self._render_attribute(rschema, value, role=role, table=True)
       
   157                     warn('[3.6] _render_attribute prototype has changed and '
       
   158                          'renamed to render_attribute, please update %s'
       
   159                          % self.__class___, DeprecationWarning)
   158             self.w(u'</table>')
   160             self.w(u'</table>')
       
   161 
       
   162     def render_attribute(self, label, value, table=False):
       
   163         self.field(label, value, tr=False, table=table)
   159 
   164 
   160     def render_entity_relations(self, entity):
   165     def render_entity_relations(self, entity):
   161         for rschema, tschemas, role, dispctrl in self._section_def(entity, 'relations'):
   166         for rschema, tschemas, role, dispctrl in self._section_def(entity, 'relations'):
   162             if rschema.final or dispctrl.get('rtypevid'):
   167             if rschema.final or dispctrl.get('rtypevid'):
   163                 vid = dispctrl.get('vid', 'reledit')
   168                 vid = dispctrl.get('vid', 'reledit')
   164                 try:
   169                 try:
   165                     rview = self._cw.vreg['views'].select(
   170                     rview = self._cw.vreg['views'].select(
   166                         vid, self._cw, rset=entity.cw_rset, row=entity.cw_row,
   171                         vid, self._cw, rset=entity.cw_rset, row=entity.cw_row,
   167                         col=entity.cw_col, dispctrl=dispctrl, rtype=rschema, role=role)
   172                         col=entity.cw_col, dispctrl=dispctrl,
       
   173                         rtype=rschema, role=role)
   168                 except NoSelectableObject:
   174                 except NoSelectableObject:
   169                     continue
   175                     continue
   170                 self.w(u'<div class="section">')
   176                 value = rview.render(row=entity.cw_row, col=entity.cw_col,
   171                 label = self._rel_label(entity, rschema, role, dispctrl)
   177                                      rtype=rschema.type, role=role)
   172                 if label:
   178             else:
   173                     self.w(u'<h4>%s</h4>' % label)
   179                 rset = self._relation_rset(entity, rschema, role, dispctrl)
   174                 rview.render(row=entity.cw_row, col=entity.cw_col, w=self.w,
   180                 if not rset:
   175                              rtype=rschema.type, role=role)
   181                     continue
   176                 self.w(u'</div>')
   182                 if hasattr(self, '_render_relation'):
   177                 continue
   183                     if not support_args(self._render_relation, 'showlabel'):
   178             rset = self._relation_rset(entity, rschema, role, dispctrl)
   184                         self._render_relation(dispctrl, rset, 'autolimited')
   179             if rset:
   185                         warn('[3.9] _render_relation prototype has changed and has '
   180                 if support_args(self._render_relation, 'label'):
   186                              'been renamed to render_relation, please update %s'
   181                     label = self._rel_label(entity, rschema, role, dispctrl)
   187                              % self.__class__, DeprecationWarning)
   182                     self._render_relation(label, dispctrl, rset, 'autolimited')
   188                     else:
   183                 elif not support_args(self._render_relation, 'showlabel'):
   189                         self._render_relation(rset, dispctrl, 'autolimited',
   184                     warn('[3.10] _render_relation prototype has changed, '
   190                                               self.show_rel_label)
   185                          'please update %s' % self.__class__, DeprecationWarning)
   191                         warn('[3.6] _render_relation prototype has changed and has '
   186                     self._render_relation(dispctrl, rset, 'autolimited')
   192                              'been renamed to render_relation, please update %s'
   187                 else:
   193                              % self.__class__, DeprecationWarning)
   188                     warn('[3.6] _render_relation prototype has changed, '
   194                     continue
   189                          'please update %s' % self.__class__, DeprecationWarning)
   195                 vid = dispctrl.get('vid', 'autolimited')
   190                     self._render_relation(rset, dispctrl, 'autolimited',
   196                 try:
   191                                           self.show_rel_label)
   197                     rview = self._cw.vreg['views'].select(
       
   198                         vid, self._cw, rset=rset, dispctrl=dispctrl)
       
   199                 except NoSelectableObject:
       
   200                     continue
       
   201                 value = rview.render()
       
   202             label = self._rel_label(entity, rschema, role, dispctrl)
       
   203             self.render_relation(label, value)
       
   204 
       
   205     def render_relation(self, label, value):
       
   206         self.w(u'<div class="section">')
       
   207         if label:
       
   208             self.w(u'<h4>%s</h4>' % label)
       
   209         self.w(value)
       
   210         self.w(u'</div>')
   192 
   211 
   193     def render_side_boxes(self, boxes):
   212     def render_side_boxes(self, boxes):
   194         """display side related relations:
   213         """display side related relations:
   195         non-meta in a first step, meta in a second step
   214         non-meta in a first step, meta in a second step
   196         """
   215         """
   264             return
   283             return
   265         if 'filter' in dispctrl:
   284         if 'filter' in dispctrl:
   266             rset = dispctrl['filter'](rset)
   285             rset = dispctrl['filter'](rset)
   267         return rset
   286         return rset
   268 
   287 
   269     def _render_relation(self, label, dispctrl, rset, defaultvid):
       
   270         self.w(u'<div class="section">')
       
   271         if label:
       
   272             self.w(u'<h4>%s</h4>' % label)
       
   273         self.wview(dispctrl.get('vid', defaultvid), rset,
       
   274                    initargs={'dispctrl': dispctrl})
       
   275         self.w(u'</div>')
       
   276 
       
   277     def _render_attribute(self, label, value, table=False):
       
   278         self.field(label, value, tr=False, table=table)
       
   279 
       
   280     def _rel_label(self, entity, rschema, role, dispctrl):
   288     def _rel_label(self, entity, rschema, role, dispctrl):
   281         if rschema.final:
   289         if rschema.final:
   282             showlabel = dispctrl.get('showlabel', self.show_attr_label)
   290             showlabel = dispctrl.get('showlabel', self.show_attr_label)
   283         else:
   291         else:
   284             showlabel = dispctrl.get('showlabel', self.show_rel_label)
   292             showlabel = dispctrl.get('showlabel', self.show_rel_label)