616 content_type = 'text/xml' |
616 content_type = 'text/xml' |
617 xml_root = 'rset' |
617 xml_root = 'rset' |
618 |
618 |
619 def call(self): |
619 def call(self): |
620 w = self.w |
620 w = self.w |
621 descr = self.rset.description |
621 rset, descr = self.rset, self.rset.description |
622 labels = self.columns_labels() |
622 eschema = self.schema.eschema |
|
623 labels = self.columns_labels(False) |
623 w(u'<?xml version="1.0" encoding="%s"?>\n' % self.req.encoding) |
624 w(u'<?xml version="1.0" encoding="%s"?>\n' % self.req.encoding) |
624 w(u'<%s>\n' % self.xml_root) |
625 w(u'<%s>\n' % self.xml_root) |
625 for rowindex, row in enumerate(self.rset): |
626 for rowindex, row in enumerate(self.rset): |
626 w(u' <row>\n') |
627 w(u' <row>\n') |
627 for colindex, val in enumerate(row): |
628 for colindex, val in enumerate(row): |
628 content = self.display_value(descr[rowindex][colindex], val) |
629 etype = descr[rowindex][colindex] |
629 tag = labels[colindex] |
630 tag = labels[colindex] |
630 w(u' <%s>%s<%s>\n' % (tag, content, tag) |
631 if val is not None and not eschema(etype).is_final(): |
631 writer.writerow(csvrow) |
632 # csvrow.append(val) # val is eid in that case |
|
633 content = self.view('textincontext', rset, |
|
634 row=rowindex, col=colindex) |
|
635 w(u' <%s eid="%s">%s</%s>\n' % (tag, val, html_escape(content), tag)) |
|
636 else: |
|
637 content = self.view('final', rset, displaytime=True, |
|
638 row=rowindex, col=colindex) |
|
639 w(u' <%s>%s</%s>\n' % (tag, html_escape(content), tag)) |
632 w(u' </row>\n') |
640 w(u' </row>\n') |
633 w(u'</%s>\n' % self.xml_root) |
641 w(u'</%s>\n' % self.xml_root) |
634 |
642 |
635 |
643 |
636 class RssView(XmlView): |
644 class RssView(XmlView): |
722 title = _('csv export') |
730 title = _('csv export') |
723 |
731 |
724 def call(self): |
732 def call(self): |
725 writer = self.csvwriter() |
733 writer = self.csvwriter() |
726 writer.writerow(self.columns_labels()) |
734 writer.writerow(self.columns_labels()) |
727 descr = self.rset.description |
735 rset, descr = self.rset, self.rset.description |
728 for rowindex, row in enumerate(self.rset): |
736 eschema = self.schema.eschema |
|
737 for rowindex, row in enumerate(rset): |
729 csvrow = [] |
738 csvrow = [] |
730 for colindex, val in enumerate(row): |
739 for colindex, val in enumerate(row): |
731 content = self.display_value(descr[rowindex][colindex], val) |
740 etype = descr[rowindex][colindex] |
|
741 if val is not None and not eschema(etype).is_final(): |
|
742 # csvrow.append(val) # val is eid in that case |
|
743 content = self.view('textincontext', rset, |
|
744 row=rowindex, col=colindex) |
|
745 else: |
|
746 content = self.view('final', rset, displaytime=True, |
|
747 row=rowindex, col=colindex) |
732 csvrow.append(content) |
748 csvrow.append(content) |
733 writer.writerow(csvrow) |
749 writer.writerow(csvrow) |
734 |
750 |
735 |
751 |
736 class CSVEntityView(CSVMixIn, EntityView): |
752 class CSVEntityView(CSVMixIn, EntityView): |