view.py
changeset 6931 0af44a38fe41
parent 6882 b5e34836f84e
parent 6926 2cda8f1b4fae
child 7346 c6d8c3ce4a3e
equal deleted inserted replaced
6884:6fa712e9dfa5 6931:0af44a38fe41
   162         * if row is specified, `cell_call` is called
   162         * if row is specified, `cell_call` is called
   163         * if none of them is supplied, the view is considered to apply on
   163         * if none of them is supplied, the view is considered to apply on
   164           the whole result set (which may be None in this case), `call` is
   164           the whole result set (which may be None in this case), `call` is
   165           called
   165           called
   166         """
   166         """
       
   167         # XXX use .cw_row/.cw_col
   167         row = context.get('row')
   168         row = context.get('row')
   168         if row is not None:
   169         if row is not None:
   169             context.setdefault('col', 0)
   170             context.setdefault('col', 0)
   170             view_func = self.cell_call
   171             view_func = self.cell_call
   171         else:
   172         else:
   208         """
   209         """
   209         rset = self.cw_rset
   210         rset = self.cw_rset
   210         if rset is None:
   211         if rset is None:
   211             raise NotImplementedError, (self, "an rset is required")
   212             raise NotImplementedError, (self, "an rset is required")
   212         wrap = self.templatable and len(rset) > 1 and self.add_div_section
   213         wrap = self.templatable and len(rset) > 1 and self.add_div_section
   213         # XXX propagate self.extra_kwargs?
   214         # avoid re-selection if rset of size 1, we already have the most
   214         for i in xrange(len(rset)):
   215         # specific view
       
   216         if rset.rowcount != 1:
       
   217             kwargs.setdefault('initargs', self.cw_extra_kwargs)
       
   218             for i in xrange(len(rset)):
       
   219                 if wrap:
       
   220                     self.w(u'<div class="section">')
       
   221                 self.wview(self.__regid__, rset, row=i, **kwargs)
       
   222                 if wrap:
       
   223                     self.w(u"</div>")
       
   224         else:
   215             if wrap:
   225             if wrap:
   216                 self.w(u'<div class="section">')
   226                 self.w(u'<div class="section">')
   217             self.cw_row = i
   227             kwargs.setdefault('col', 0)
   218             self.wview(self.__regid__, rset, row=i, **kwargs)
   228             self.cell_call(row=0, **kwargs)
   219             if wrap:
   229             if wrap:
   220                 self.w(u"</div>")
   230                 self.w(u"</div>")
   221 
   231 
   222     def cell_call(self, row, col, **kwargs):
   232     def cell_call(self, row, col, **kwargs):
   223         """the view is called for a particular result set cell"""
   233         """the view is called for a particular result set cell"""
   343             if tr:
   353             if tr:
   344                 label = display_name(self._cw, label)
   354                 label = display_name(self._cw, label)
   345             if table:
   355             if table:
   346                 w(u'<th>%s</th>' % label)
   356                 w(u'<th>%s</th>' % label)
   347             else:
   357             else:
   348                 w(u'<span>%s</span> ' % label)
   358                 w(u'<span class="label">%s</span> ' % label)
   349         if table:
   359         if table:
   350             if not (show_label and label):
   360             if not (show_label and label):
   351                 w(u'<td colspan="2">%s</td></tr>' % value)
   361                 w(u'<td colspan="2">%s</td></tr>' % value)
   352             else:
   362             else:
   353                 w(u'<td>%s</td></tr>' % value)
   363                 w(u'<td>%s</td></tr>' % value)
   372     def cell_call(self, row, col, **kwargs):
   382     def cell_call(self, row, col, **kwargs):
   373         self.entity_call(self.cw_rset.get_entity(row, col), **kwargs)
   383         self.entity_call(self.cw_rset.get_entity(row, col), **kwargs)
   374 
   384 
   375     def entity_call(self, entity, **kwargs):
   385     def entity_call(self, entity, **kwargs):
   376         raise NotImplementedError()
   386         raise NotImplementedError()
       
   387 
   377 
   388 
   378 class StartupView(View):
   389 class StartupView(View):
   379     """base class for views which doesn't need a particular result set to be
   390     """base class for views which doesn't need a particular result set to be
   380     displayed (so they can always be displayed !)
   391     displayed (so they can always be displayed !)
   381     """
   392     """