From b390539eac8034f73cafba1b984736a2364db4a9 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: Thu, 13 Jun 2019 14:17:17 +0300 Subject: [PATCH] =?UTF-8?q?=D0=93=D0=BB=D0=BE=D0=B1=D0=B0=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B5=D0=B2=D1=80=D0=B0=D1=89=D0=B5=D0=BD=D1=8B?= =?UTF-8?q?=20=D0=B2=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=D1=8B=20jinja2?= =?UTF-8?q?=20[closes=20#40]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flatfilecms/__init__.py | 4 +++- flatfilecms/events.py | 24 ++++----------------- flatfilecms/filters.py | 30 ++++++++++++++++++++------ flatfilecms/templates/blogposts.jinja2 | 4 ++-- flatfilecms/templates/header.jinja2 | 4 ++-- tests/test_events.py | 9 -------- 6 files changed, 34 insertions(+), 41 deletions(-) diff --git a/flatfilecms/__init__.py b/flatfilecms/__init__.py index 0f7a30d..b73ded3 100644 --- a/flatfilecms/__init__.py +++ b/flatfilecms/__init__.py @@ -11,7 +11,9 @@ def main(global_config, **settings): default_jinja2_filters = """markdown = flatfilecms.filters:markdown2html fileglob = flatfilecms.filters:fileglob merge_dict = flatfilecms.filters.merge_dict - join_url = flatfilecms.filters.join_url""" + join_url = flatfilecms.filters.join_url + format_date = flatfilecms.filters.format_date + format_datetime = flatfilecms.filters.format_datetime""" settings['jinja2.filters'] = default_jinja2_filters + settings.get( 'jinja2.filters', '') diff --git a/flatfilecms/events.py b/flatfilecms/events.py index a6ee448..03a4af8 100644 --- a/flatfilecms/events.py +++ b/flatfilecms/events.py @@ -1,36 +1,20 @@ -from babel import dates -from datetime import date -from functools import partial - from pyramid.events import subscriber from pyramid.events import BeforeRender from .models import load_yaml -@subscriber(BeforeRender) -def add_global(event): - event['globals'] = { - 'format_date': - partial(dates.format_date, locale=event['request'].locale_name), - 'format_datetime': - partial(dates.format_datetime, locale=event['request'].locale_name), - 'today': - date.today(), - } - - @subscriber(BeforeRender) def add_data(event): try: - event['data'] = load_yaml('globals.yaml', True) + event["data"] = load_yaml("globals.yaml", True) except FileNotFoundError: - event['data'] = {} + event["data"] = {} @subscriber(BeforeRender) def add_menu(event): try: - event['menu'] = load_yaml('menu/default.yaml', True) + event["menu"] = load_yaml("menu/default.yaml", True) except FileNotFoundError: - event['menu'] = [] + event["menu"] = [] diff --git a/flatfilecms/filters.py b/flatfilecms/filters.py index 5e253ac..0511bfa 100644 --- a/flatfilecms/filters.py +++ b/flatfilecms/filters.py @@ -1,3 +1,5 @@ +from babel import dates + from jinja2 import contextfilter, Markup import markdown from pathlib import Path @@ -7,7 +9,7 @@ from markdown.blockprocessors import BlockProcessor class Jinja2Processor(BlockProcessor): def test(self, parent, block): - return block.startswith('{%') or block.startswith('{{') + return block.startswith("{%") or block.startswith("{{") def run(self, parent, blocks): block = blocks.pop(0) @@ -27,17 +29,19 @@ class Jinja2Processor(BlockProcessor): class IgnoreExtension(Extension): def extendMarkdown(self, md, md_globals): - md.parser.blockprocessors.add('jinja2', Jinja2Processor(md.parser), - ">hashheader") + md.parser.blockprocessors.add( + "jinja2", Jinja2Processor(md.parser), ">hashheader" + ) @contextfilter def markdown2html(context, text, render=True): result = markdown.markdown( text, - extensions=[IgnoreExtension(), 'markdown.extensions.extra'], - output_format='html5', - tab_length=2) + extensions=[IgnoreExtension(), "markdown.extensions.extra"], + output_format="html5", + tab_length=2, + ) if render: result = context.environment.from_string(result).render(context) if context.eval_ctx.autoescape: @@ -56,4 +60,16 @@ def fileglob(path, root): def join_url(a, b): - return a.rstrip('/') + '/' + b.lstrip('/') + return a.rstrip("/") + "/" + b.lstrip("/") + + +@contextfilter +def format_date(context, *args, **kwargs): + kwargs.setdefault("locale", context["request"].locale_name) + return dates.format_date(*args, **kwargs) + + +@contextfilter +def format_datetime(context, *args, **kwargs): + kwargs.setdefault("locale", context["request"].locale_name) + return dates.format_datetime(*args, **kwargs) diff --git a/flatfilecms/templates/blogposts.jinja2 b/flatfilecms/templates/blogposts.jinja2 index 193b9af..af45c79 100644 --- a/flatfilecms/templates/blogposts.jinja2 +++ b/flatfilecms/templates/blogposts.jinja2 @@ -11,8 +11,8 @@ Читать {% endfor %} diff --git a/flatfilecms/templates/header.jinja2 b/flatfilecms/templates/header.jinja2 index 4b47c96..12bc910 100644 --- a/flatfilecms/templates/header.jinja2 +++ b/flatfilecms/templates/header.jinja2 @@ -56,8 +56,8 @@

{{title}}

{%- if description %}

{{description}}

{% endif %}
- {%- if published %}

{{globals.format_date(published, format='long')}}

{% endif %} - {%- if updated %}

{{globals.format_date(updated, format='long')}}

{% endif %} + {%- if published %}

{{published|format_date('long')}}

{% endif %} + {%- if updated %}

{{updated|format_date('long')}}

{% endif %}
diff --git a/tests/test_events.py b/tests/test_events.py index c1bed42..00000a6 100644 --- a/tests/test_events.py +++ b/tests/test_events.py @@ -1,12 +1,3 @@ -def test_globals(fake_request): - from flatfilecms.events import add_global - event = {'request': fake_request} - add_global(event) - assert 'globals' in event - assert 'format_date' in event['globals'] - assert 'format_datetime' in event['globals'] - - def test_data(config): from flatfilecms.events import add_data event = {}