diff -r f94b41709ce6 -r b056a49c16dc web/views/xmlrss.py --- a/web/views/xmlrss.py Fri Apr 24 16:48:38 2009 +0200 +++ b/web/views/xmlrss.py Fri Apr 24 17:04:14 2009 +0200 @@ -30,10 +30,10 @@ content_type = 'text/xml' xml_root = 'rset' item_vid = 'xmlitem' - + def cell_call(self, row, col): self.wview(self.item_vid, self.rset, row=row, col=col) - + def call(self): """display a list of entities by calling their view""" self.w(u'\n' % self.req.encoding) @@ -66,7 +66,7 @@ self.w(u' <%s>%s\n' % (attr, value, attr)) self.w(u'\n' % (entity.e_schema)) - + class XmlRsetView(AnyRsetView): """dumps raw rset as xml""" id = 'rsetxml' @@ -74,7 +74,7 @@ templatable = False content_type = 'text/xml' xml_root = 'rset' - + def call(self): w = self.w rset, descr = self.rset, self.rset.description @@ -103,13 +103,13 @@ w(u' \n') w(u'\n' % self.xml_root) - + # RSS stuff ################################################################### class RSSFeedURL(Component): id = 'rss_feed_url' __select__ = non_final_entity() - + def feed_url(self): return self.build_url(rql=self.limited_rql(), vid='rss') @@ -117,20 +117,20 @@ class RSSEntityFeedURL(Component): id = 'rss_feed_url' __select__ = non_final_entity() & one_line_rset() - + def feed_url(self): return self.entity(0, 0).rss_feed_url() - + class RSSIconBox(BoxTemplate): """just display the RSS icon on uniform result set""" id = 'rss' __select__ = (BoxTemplate.__select__ & appobject_selectable('components', 'rss_feed_url')) - + visible = False order = 999 - + def call(self, **kwargs): try: rss = self.req.external_resource('RSS_LOGO') @@ -148,58 +148,57 @@ templatable = False content_type = 'text/xml' http_cache_manager = MaxAgeHTTPCacheManager - cache_max_age = 60*60*2 # stay in http cache for 2 hours by default - - def cell_call(self, row, col): - self.wview('rssitem', self.rset, row=row, col=col) - - def call(self): - """display a list of entities by calling their view""" + cache_max_age = 60*60*2 # stay in http cache for 2 hours by default + + def _open(self): req = self.req self.w(u'\n' % req.encoding) - self.w(u'''''') - self.w(u' \n' % xml_escape(req.url())) - self.w(u' %s RSS Feed\n' % xml_escape(self.page_title())) - self.w(u' %s\n' % xml_escape(req.form.get('vtitle', ''))) + self.w(u'\n') + self.w(u' \n') + self.w(u' %s RSS Feed\n' % html_escape(self.page_title())) + self.w(u' %s\n' % html_escape(req.form.get('vtitle', ''))) params = req.form.copy() params.pop('vid', None) - self.w(u' %s\n' % xml_escape(self.build_url(**params))) - self.w(u' \n') - self.w(u' \n') - for entity in self.rset.entities(): - self.w(u' \n' % xml_escape(entity.absolute_url())) - self.w(u' \n') - self.w(u' \n') + self.w(u' %s\n' % html_escape(self.build_url(**params))) + + def _close(self): self.w(u' \n') + self.w(u'') + + def call(self): + """display a list of entities by calling their view""" + self._open() for i in xrange(self.rset.rowcount): self.cell_call(i, 0) - self.w(u'') + self._close() + def cell_call(self, row, col): + self.wview('rssitem', self.rset, row=row, col=col) class RssItemView(EntityView): id = 'rssitem' date_format = '%%Y-%%m-%%dT%%H:%%M%+03i:00' % (timezone / 3600) + add_div_section = False def cell_call(self, row, col): entity = self.complete_entity(row, col) - self.w(u'\n' % xml_escape(entity.absolute_url())) + self.w(u'\n') + self.w(u'%s\n' % html_escape(entity.absolute_url())) + self.render_title_link(entity) + self._marker('description', html_escape(entity.dc_description())) + self._marker('dc:date', entity.dc_date(self.date_format)) + self.render_entity_creator(entity) + self.w(u'\n') + + def render_title_link(self, entity): self._marker('title', entity.dc_long_title()) self._marker('link', entity.absolute_url()) - self._marker('description', entity.dc_description()) - self._marker('dc:date', entity.dc_date(self.date_format)) + + def render_entity_creator(self, entity): if entity.creator: - self.w(u'') - self._marker('name', entity.creator.name()) - email = entity.creator.get_email() - if email: - self._marker('email', email) - self.w(u'') - self.w(u'\n') - + self._marker('dc:creator', entity.dc_creator()) + + def _marker(self, marker, value): if value: - self.w(u' <%s>%s\n' % (marker, xml_escape(value), marker)) + self.w(u' <%s>%s\n' % (marker, html_escape(value), marker))