From 1ca1929e2370b884861bf84dd7449b1169b96887 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD=20=D0=9A=D0=B0=D1=81=D0=B8?= =?UTF-8?q?=D0=BC=D0=BE=D0=B2?= Date: Mon, 13 May 2019 20:39:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B0=20Atom=20[closes=20#4]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flatfilecms/templates/atom.jinja2 | 38 ++++++++++++++++++++++++++ flatfilecms/templates/base.jinja2 | 3 ++ flatfilecms/templates/blogposts.jinja2 | 4 +++ flatfilecms/views/__init__.py | 19 ++++++------- 4 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 flatfilecms/templates/atom.jinja2 diff --git a/flatfilecms/templates/atom.jinja2 b/flatfilecms/templates/atom.jinja2 new file mode 100644 index 0000000..43c13ac --- /dev/null +++ b/flatfilecms/templates/atom.jinja2 @@ -0,0 +1,38 @@ + + + {{title}} + {%- if subtitle %} + {{subtitle}} + {%- endif %} + + {%- if alternate %} + + {%- endif %} + {{(pages[0][1].page['updated'] or pages[0][1].page['published']).isoformat()}}+00:00 + urn:uuid:{{id}} + + {{author['name']}} + + {%- if category %} + + {%- endif %} + flatfilecms + {%- for item in pages %} + + {{item[1].page['title']}} + + urn:uuid:{{item[1].page['id']}} + {{(item[1].page['updated'] or item[1].page['published']).isoformat()}}+00:00 + {{item[1].page['published'].isoformat()}}+00:00 + {{item[1].page['summary'] or item[1].page['description']}} + {%- if item[1].page['author'] %} + + {{item[1].page['author']['name']}} + + {%- endif %} + {%- if item[1].page['category'] %} + + {%- endif %} + + {%- endfor %} + diff --git a/flatfilecms/templates/base.jinja2 b/flatfilecms/templates/base.jinja2 index f4304cd..07b5fb6 100644 --- a/flatfilecms/templates/base.jinja2 +++ b/flatfilecms/templates/base.jinja2 @@ -12,6 +12,9 @@ {% if amphtml is defined -%} {% endif -%} + {% for link in alternate -%} + + {% endfor -%} {{title}} {% block links %} {%- endblock %} diff --git a/flatfilecms/templates/blogposts.jinja2 b/flatfilecms/templates/blogposts.jinja2 index 1aaa1cb..d7a8a05 100644 --- a/flatfilecms/templates/blogposts.jinja2 +++ b/flatfilecms/templates/blogposts.jinja2 @@ -17,4 +17,8 @@ {% endfor %} +{% set atom_feed = alternate|selectattr('type', 'equalto', 'application/atom+xml')|first -%} +{% if atom_feed -%} +

Подписаться на обновления:

+{% endif -%} {% endblock %} diff --git a/flatfilecms/views/__init__.py b/flatfilecms/views/__init__.py index 82c4518..d671002 100644 --- a/flatfilecms/views/__init__.py +++ b/flatfilecms/views/__init__.py @@ -19,6 +19,7 @@ def set_content_type(self, content_type): def blog(self, options={}): path = options.get('base', '') + format = options.get('format', 'blogposts') root = find_root(self.context) tree = find_resource(root, path) postlist = [] @@ -27,19 +28,17 @@ def blog(self, options={}): postlist.append((f"{path}/{name}", item)) post = self.context.page.copy() post['pages'] = sorted( - postlist, - key=lambda t: t[1].page['published'], - reverse=True) + postlist, key=lambda t: t[1].page['published'], reverse=True) if 'menu' not in post: post['menu'] = yaml.load( AssetResolver().resolve( str(PurePath(self.context.data_path) / 'menu/default.yaml')).stream(), LoaderFactory(self.context.data_path)) - return render_to_response( - '{0}.jinja2'.format( - post.get('template', 'blogposts')), - post, - request=self.request, - response=self.request.response - ) + if format == 'atom': + set_content_type(self, 'application/atom+xml') + return render_to_response( + '{0}.jinja2'.format(post.get('template', format)), + post, + request=self.request, + response=self.request.response)