equal
deleted
inserted
replaced
20 |
20 |
21 # base xml views ############################################################## |
21 # base xml views ############################################################## |
22 |
22 |
23 class XMLView(EntityView): |
23 class XMLView(EntityView): |
24 """xml view for entities""" |
24 """xml view for entities""" |
25 id = 'xml' |
25 __regid__ = 'xml' |
26 title = _('xml') |
26 title = _('xml') |
27 templatable = False |
27 templatable = False |
28 content_type = 'text/xml' |
28 content_type = 'text/xml' |
29 xml_root = 'rset' |
29 xml_root = 'rset' |
30 item_vid = 'xmlitem' |
30 item_vid = 'xmlitem' |
40 self.cell_call(i, 0) |
40 self.cell_call(i, 0) |
41 self.w(u'</%s>\n' % self.xml_root) |
41 self.w(u'</%s>\n' % self.xml_root) |
42 |
42 |
43 |
43 |
44 class XMLItemView(EntityView): |
44 class XMLItemView(EntityView): |
45 id = 'xmlitem' |
45 __regid__ = 'xmlitem' |
46 |
46 |
47 def cell_call(self, row, col): |
47 def cell_call(self, row, col): |
48 """ element as an item for an xml feed """ |
48 """ element as an item for an xml feed """ |
49 entity = self.complete_entity(row, col) |
49 entity = self.complete_entity(row, col) |
50 self.w(u'<%s>\n' % (entity.e_schema)) |
50 self.w(u'<%s>\n' % (entity.e_schema)) |
65 self.w(u'</%s>\n' % (entity.e_schema)) |
65 self.w(u'</%s>\n' % (entity.e_schema)) |
66 |
66 |
67 |
67 |
68 class XMLRsetView(AnyRsetView): |
68 class XMLRsetView(AnyRsetView): |
69 """dumps raw rset as xml""" |
69 """dumps raw rset as xml""" |
70 id = 'rsetxml' |
70 __regid__ = 'rsetxml' |
71 title = _('xml export') |
71 title = _('xml export') |
72 templatable = False |
72 templatable = False |
73 content_type = 'text/xml' |
73 content_type = 'text/xml' |
74 xml_root = 'rset' |
74 xml_root = 'rset' |
75 |
75 |
103 |
103 |
104 |
104 |
105 # RSS stuff ################################################################### |
105 # RSS stuff ################################################################### |
106 |
106 |
107 class RSSFeedURL(Component): |
107 class RSSFeedURL(Component): |
108 id = 'rss_feed_url' |
108 __regid__ = 'rss_feed_url' |
109 __select__ = non_final_entity() |
109 __select__ = non_final_entity() |
110 |
110 |
111 def feed_url(self): |
111 def feed_url(self): |
112 return self.build_url(rql=self.limited_rql(), vid='rss') |
112 return self.build_url(rql=self.limited_rql(), vid='rss') |
113 |
113 |
114 |
114 |
115 class RSSEntityFeedURL(Component): |
115 class RSSEntityFeedURL(Component): |
116 id = 'rss_feed_url' |
116 __regid__ = 'rss_feed_url' |
117 __select__ = non_final_entity() & one_line_rset() |
117 __select__ = non_final_entity() & one_line_rset() |
118 |
118 |
119 def feed_url(self): |
119 def feed_url(self): |
120 return self.rset.get_entity(0, 0).rss_feed_url() |
120 return self.rset.get_entity(0, 0).rss_feed_url() |
121 |
121 |
122 |
122 |
123 class RSSIconBox(box.BoxTemplate): |
123 class RSSIconBox(box.BoxTemplate): |
124 """just display the RSS icon on uniform result set""" |
124 """just display the RSS icon on uniform result set""" |
125 id = 'rss' |
125 __regid__ = 'rss' |
126 __select__ = (box.BoxTemplate.__select__ |
126 __select__ = (box.BoxTemplate.__select__ |
127 & appobject_selectable('components', 'rss_feed_url')) |
127 & appobject_selectable('components', 'rss_feed_url')) |
128 |
128 |
129 visible = False |
129 visible = False |
130 order = 999 |
130 order = 999 |
140 url = urlgetter.feed_url() |
140 url = urlgetter.feed_url() |
141 self.w(u'<a href="%s"><img src="%s" alt="rss"/></a>\n' % (xml_escape(url), rss)) |
141 self.w(u'<a href="%s"><img src="%s" alt="rss"/></a>\n' % (xml_escape(url), rss)) |
142 |
142 |
143 |
143 |
144 class RSSView(XMLView): |
144 class RSSView(XMLView): |
145 id = 'rss' |
145 __regid__ = 'rss' |
146 title = _('rss') |
146 title = _('rss') |
147 templatable = False |
147 templatable = False |
148 content_type = 'text/xml' |
148 content_type = 'text/xml' |
149 http_cache_manager = httpcache.MaxAgeHTTPCacheManager |
149 http_cache_manager = httpcache.MaxAgeHTTPCacheManager |
150 cache_max_age = 60*60*2 # stay in http cache for 2 hours by default |
150 cache_max_age = 60*60*2 # stay in http cache for 2 hours by default |
176 def cell_call(self, row, col): |
176 def cell_call(self, row, col): |
177 self.wview('rssitem', self.rset, row=row, col=col) |
177 self.wview('rssitem', self.rset, row=row, col=col) |
178 |
178 |
179 |
179 |
180 class RSSItemView(EntityView): |
180 class RSSItemView(EntityView): |
181 id = 'rssitem' |
181 __regid__ = 'rssitem' |
182 date_format = '%%Y-%%m-%%dT%%H:%%M%+03i:00' % (timezone / 3600) |
182 date_format = '%%Y-%%m-%%dT%%H:%%M%+03i:00' % (timezone / 3600) |
183 add_div_section = False |
183 add_div_section = False |
184 |
184 |
185 def cell_call(self, row, col): |
185 def cell_call(self, row, col): |
186 entity = self.complete_entity(row, col) |
186 entity = self.complete_entity(row, col) |