comparison src/pages/common/blog/atom.xml/page_meta.py @ 1017:8e7897b1008a

pages (blog/atom.xml, u/atom.xml): Atom feed implementation: - Content-Type is set to suitable value - common/blog is used, comments are disabled - request_uri, http_uri and xmpp_uri are set in template data - "updated" variable in template date is set with the "updated" value of first item (i.e. the most recent one), or to current time if there is not item yet. - u/atom.xml us a simple redirection to blog/atom.xml
author Goffi <goffi@goffi.org>
date Fri, 19 Jan 2018 18:14:28 +0100
parents
children 6dc90f109e57
comparison
equal deleted inserted replaced
1016:fc1c913cc9d1 1017:8e7897b1008a
1 #!/usr/bin/env python2.7
2 # -*- coding: utf-8 -*-
3
4 from libervia.server.constants import Const as C
5 from twisted.internet import defer
6 from sat.tools.common import uri
7 import time
8
9 name = u"blog_feed_atom"
10 access = C.PAGES_ACCESS_PUBLIC
11 template = u"blog/atom.xml"
12
13
14 @defer.inlineCallbacks
15 def prepare_render(self, request):
16 request.setHeader('Content-Type', 'application/atom+xml; charset=utf-8')
17 template_data = request.template_data
18 data = self.getRData(request)
19 data['show_comments'] = False
20 service, node = data[u'service'], data.get(u'node')
21 blog_page = self.getPageByName(u'blog')
22 yield blog_page.prepare_render(self, request)
23 items = data[u'items']
24
25 template_data[u'request_uri'] = self.host.getExtBaseURL(request, request.uri.decode('utf-8'))
26 template_data[u'xmpp_uri'] = uri.buildXMPPUri(u'pubsub',
27 subtype=u'microblog',
28 path=service.full(),
29 node=node)
30 blog_view = self.getPageByName(u'blog_view')
31 template_data[u'http_uri'] = self.host.getExtBaseURL(request, blog_view.getURL(service.full(), node))
32 if items:
33 template_data[u'updated'] = items[0].updated
34 else:
35 template_data[u'updated'] = time.time()