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) |