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