diff -r 84a5106840fa -r c8a6edc224bb web/views/baseviews.py --- a/web/views/baseviews.py Thu Jan 08 12:12:40 2009 +0100 +++ b/web/views/baseviews.py Thu Jan 08 12:39:46 2009 +0100 @@ -607,6 +607,32 @@ self.w(u'\n' % (entity.e_schema)) + +class XMLRsetView(AnyRsetView): + """dumps xml in CSV""" + id = 'rsetxml' + title = _('xml export') + templatable = False + content_type = 'text/xml' + xml_root = 'rset' + + def call(self): + w = self.w + descr = self.rset.description + labels = self.columns_labels() + w(u'\n' % self.req.encoding) + w(u'<%s>\n' % self.xml_root) + for rowindex, row in enumerate(self.rset): + w(u' \n') + for colindex, val in enumerate(row): + content = self.display_value(descr[rowindex][colindex], val) + tag = labels[colindex] + w(u' <%s>%s<%s>\n' % (tag, content, tag) + writer.writerow(csvrow) + w(u' \n') + w(u'\n' % self.xml_root) + + class RssView(XmlView): id = 'rss' title = _('rss') @@ -697,35 +723,15 @@ def call(self): writer = self.csvwriter() - writer.writerow(self.get_headers_labels()) + writer.writerow(self.columns_labels()) descr = self.rset.description for rowindex, row in enumerate(self.rset): csvrow = [] for colindex, val in enumerate(row): - etype = descr[rowindex][colindex] - if val is not None and not self.schema.eschema(etype).is_final(): - # csvrow.append(val) # val is eid in that case - content = self.view('textincontext', self.rset, - row=rowindex, col=colindex) - else: - content = self.view('final', self.rset, displaytime=True, - row=rowindex, col=colindex) + content = self.display_value(descr[rowindex][colindex], val) csvrow.append(content) writer.writerow(csvrow) - def get_headers_labels(self): - rqlstdescr = self.rset.syntax_tree().get_description()[0] # XXX missing Union support - labels = [] - for colindex, attr in enumerate(rqlstdescr): - # compute column header - if colindex == 0 or attr == 'Any': # find a better label - label = ','.join(display_name(self.req, et) - for et in self.rset.column_types(colindex)) - else: - label = display_name(self.req, attr) - labels.append(label) - return labels - class CSVEntityView(CSVMixIn, EntityView): """dumps rset's entities (with full set of attributes) in CSV"""