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 """ |