From 02baa99d8908cbebb21da4e2ca8c73f74178b39e 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: Sun, 24 Feb 2019 00:17:06 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=BA=D0=B8=20view=20[=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D0=B2?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=20#22]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flatfilecms/views/pages.py | 13 ++++++++++++- tests/test_pages.py | 14 +++++++------- tests/views.py | 4 ++-- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/flatfilecms/views/pages.py b/flatfilecms/views/pages.py index 7b31eae..1064722 100644 --- a/flatfilecms/views/pages.py +++ b/flatfilecms/views/pages.py @@ -5,7 +5,7 @@ from pyramid.view import ( from pyramid.renderers import render_to_response from pyramid.httpexceptions import (HTTPFound, HTTPNotFound) from pyramid.response import FileResponse -from pyramid.path import AssetResolver +from pyramid.path import (DottedNameResolver, AssetResolver) from pathlib import PurePath import yaml @@ -36,6 +36,17 @@ class PagesView: @view_config(context=IMarkdown) def process_yaml(self): + if 'view' in self.context.page: + r = DottedNameResolver() + if isinstance(self.context.page['view'], str): + r.resolve(self.context.page['view'])(self) + else: + for view in self.context.page['view']: + if isinstance(view, str): + r.resolve(view)(self) + else: + for name, kw in view.items(): + r.resolve(name)(self, **kw) post = self.context.page if 'redirect' in post: return HTTPFound(location=post['redirect']) diff --git a/tests/test_pages.py b/tests/test_pages.py index c095d26..f69a87c 100644 --- a/tests/test_pages.py +++ b/tests/test_pages.py @@ -16,7 +16,7 @@ def pages(current_directory): @pytest.fixture -def request(): +def fake_request(): from pyramid.testing import DummyRequest return DummyRequest() @@ -37,20 +37,20 @@ def test_loading_markdown(pages): assert pages['index'].page['title'] == 'Заглушка для тестов БД' -def test_generating_markdown(pages, request, config): +def test_generating_markdown(pages, fake_request, config): from flatfilecms.views.pages import PagesView - view = PagesView(pages['index'], request) + view = PagesView(pages['index'], fake_request) assert view.process_yaml().text == 'Hello World!' -def test_view(pages, request, config): +def test_view(pages, fake_request, config): from flatfilecms.views.pages import PagesView - view = PagesView(pages['view'], request) + view = PagesView(pages['view'], fake_request) assert view.process_yaml().text == 'Hello World! View1' -def test_views(pages, request, config): +def test_views(pages, fake_request, config): from flatfilecms.views.pages import PagesView - view = PagesView(pages['views'], request) + view = PagesView(pages['views'], fake_request) assert view.process_yaml().text == \ 'Hello World! View1 View2 View3(a:1, b:2)' diff --git a/tests/views.py b/tests/views.py index 443ca2f..e08a7d4 100644 --- a/tests/views.py +++ b/tests/views.py @@ -6,5 +6,5 @@ def test2(self): self.context.page['content'] += ' View2' -def test3(self, a, b): - self.context.page['content'] += f' View3(a:{a}, b:{b})' +def test3(self, **kwargs): + self.context.page['content'] += f" View3(a:{kwargs['a']}, b:{kwargs['b']})"