Реализация поддержки view [закрывает #22]
parent
255aa9b57a
commit
02baa99d89
|
@ -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'])
|
||||
|
|
|
@ -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)'
|
||||
|
|
|
@ -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']})"
|
||||
|
|
Reference in New Issue