367 """base class for views applying on any non empty result sets""" |
367 """base class for views applying on any non empty result sets""" |
368 __select__ = nonempty_rset() |
368 __select__ = nonempty_rset() |
369 |
369 |
370 category = 'anyrsetview' |
370 category = 'anyrsetview' |
371 |
371 |
372 def columns_labels(self, tr=True): |
372 def columns_labels(self, mainindex=0, tr=True): |
373 if tr: |
373 if tr: |
374 translate = display_name |
374 translate = display_name |
375 else: |
375 else: |
376 translate = lambda req, val: val |
376 translate = lambda req, val: val |
377 rqlstdescr = self.rset.syntax_tree().get_description()[0] # XXX missing Union support |
377 # XXX [0] because of missing Union support |
|
378 rqlstdescr = self.rset.syntax_tree().get_description(mainindex, |
|
379 translate)[0] |
378 labels = [] |
380 labels = [] |
379 for colindex, attr in enumerate(rqlstdescr): |
381 for colindex, label in enumerate(rqlstdescr): |
380 # compute column header |
382 # compute column header |
381 if colindex == 0 or attr == 'Any': # find a better label |
383 if label == 'Any': # find a better label |
382 label = ','.join(translate(self.req, et) |
384 label = ','.join(translate(self.req, et) |
383 for et in self.rset.column_types(colindex)) |
385 for et in self.rset.column_types(colindex)) |
384 else: |
|
385 label = translate(self.req, attr) |
|
386 labels.append(label) |
386 labels.append(label) |
387 return labels |
387 return labels |
388 |
388 |
389 |
389 |
390 # concrete template base classes ############################################## |
390 # concrete template base classes ############################################## |