web/views/baseviews.py
changeset 370 7e76f651314b
parent 369 c8a6edc224bb
child 371 4e849b424aaa
equal deleted inserted replaced
369:c8a6edc224bb 370:7e76f651314b
   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):