web/views/baseviews.py
changeset 1194 e224f064a268
parent 1140 79bcbb1c39ce
child 1263 01152fffd593
child 1413 ad19d7e6a291
child 1589 496fdc081e25
equal deleted inserted replaced
1193:24486ce4dea1 1194:e224f064a268
   671     title = _('rss')
   671     title = _('rss')
   672     templatable = False
   672     templatable = False
   673     content_type = 'text/xml'
   673     content_type = 'text/xml'
   674     http_cache_manager = MaxAgeHTTPCacheManager
   674     http_cache_manager = MaxAgeHTTPCacheManager
   675     cache_max_age = 60*60*2 # stay in http cache for 2 hours by default 
   675     cache_max_age = 60*60*2 # stay in http cache for 2 hours by default 
   676     
   676 
   677     def cell_call(self, row, col):
   677     def _open(self):
   678         self.wview('rssitem', self.rset, row=row, col=col)
       
   679         
       
   680     def call(self):
       
   681         """display a list of entities by calling their <item_vid> view"""
       
   682         req = self.req
   678         req = self.req
   683         self.w(u'<?xml version="1.0" encoding="%s"?>\n' % req.encoding)
   679         self.w(u'<?xml version="1.0" encoding="%s"?>\n' % req.encoding)
   684         self.w(u'''<rss version="2.0"
   680         self.w(u'''<rss version="2.0"
   685  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   681  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   686  xmlns:dc="http://purl.org/dc/elements/1.1/"
   682  xmlns:dc="http://purl.org/dc/elements/1.1/"
   689         self.w(u'    <title>%s RSS Feed</title>\n' % html_escape(self.page_title()))
   685         self.w(u'    <title>%s RSS Feed</title>\n' % html_escape(self.page_title()))
   690         self.w(u'    <description>%s</description>\n' % html_escape(req.form.get('vtitle', '')))
   686         self.w(u'    <description>%s</description>\n' % html_escape(req.form.get('vtitle', '')))
   691         params = req.form.copy()
   687         params = req.form.copy()
   692         params.pop('vid', None)
   688         params.pop('vid', None)
   693         self.w(u'    <link>%s</link>\n' % html_escape(self.build_url(**params)))
   689         self.w(u'    <link>%s</link>\n' % html_escape(self.build_url(**params)))
       
   690 
       
   691     def _close(self):
       
   692         self.w(u'  </channel>\n')
       
   693         self.w(u'</rss>')       
       
   694         
       
   695     def call(self):
       
   696         """display a list of entities by calling their <item_vid> view"""
       
   697         self._open()
   694         for i in xrange(self.rset.rowcount):
   698         for i in xrange(self.rset.rowcount):
   695             self.cell_call(i, 0)
   699             self.cell_call(i, 0)
   696         self.w(u'  </channel>\n')
   700         self._close()
   697         self.w(u'</rss>')       
   701 
       
   702     def cell_call(self, row, col):
       
   703         self.wview('rssitem', self.rset, row=row, col=col)
   698 
   704 
   699 class RssItemView(EntityView):
   705 class RssItemView(EntityView):
   700     id = 'rssitem'
   706     id = 'rssitem'
   701     date_format = '%%Y-%%m-%%dT%%H:%%M%+03i:00' % (timezone / 3600)
   707     date_format = '%%Y-%%m-%%dT%%H:%%M%+03i:00' % (timezone / 3600)
       
   708     add_div_section = False
   702 
   709 
   703     def cell_call(self, row, col):
   710     def cell_call(self, row, col):
   704         entity = self.complete_entity(row, col)
   711         entity = self.complete_entity(row, col)
   705         self.w(u'<item rdf:about="%s">\n' % html_escape(entity.absolute_url()))
   712         self.w(u'<item rdf:about="%s">\n' % html_escape(entity.absolute_url()))
   706         self.render_title_link(entity)
   713         self.render_title_link(entity)