parent
02baa99d89
commit
27a70ed76d
|
@ -0,0 +1,9 @@
|
|||
from pyramid.httpexceptions import HTTPFound
|
||||
|
||||
|
||||
def redirect(self, url):
|
||||
return HTTPFound(location=url)
|
||||
|
||||
|
||||
def set_content_type(self, content_type):
|
||||
self.request.response.content_type = content_type
|
|
@ -39,17 +39,26 @@ class PagesView:
|
|||
if 'view' in self.context.page:
|
||||
r = DottedNameResolver()
|
||||
if isinstance(self.context.page['view'], str):
|
||||
r.resolve(self.context.page['view'])(self)
|
||||
response = r.resolve(self.context.page['view'])(self)
|
||||
if response:
|
||||
return response
|
||||
elif isinstance(self.context.page['view'], dict):
|
||||
for name, options in self.context.page['view'].items():
|
||||
response = r.resolve(name)(self, options)
|
||||
if response:
|
||||
return response
|
||||
else:
|
||||
for view in self.context.page['view']:
|
||||
if isinstance(view, str):
|
||||
r.resolve(view)(self)
|
||||
response = r.resolve(view)(self)
|
||||
if response:
|
||||
return response
|
||||
else:
|
||||
for name, kw in view.items():
|
||||
r.resolve(name)(self, **kw)
|
||||
for name, options in view.items():
|
||||
response = r.resolve(name)(self, options)
|
||||
if response:
|
||||
return response
|
||||
post = self.context.page
|
||||
if 'redirect' in post:
|
||||
return HTTPFound(location=post['redirect'])
|
||||
if 'menu' not in post:
|
||||
post['menu'] = yaml.load(
|
||||
AssetResolver().resolve(
|
||||
|
@ -60,10 +69,9 @@ class PagesView:
|
|||
'{0}.jinja2'.format(
|
||||
post.get('template', 'default')),
|
||||
post,
|
||||
request=self.request
|
||||
request=self.request,
|
||||
response=self.request.response
|
||||
)
|
||||
if 'content_type' in post:
|
||||
response.content_type = post['content_type']
|
||||
return response
|
||||
|
||||
@view_config(context=Jinja2)
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
title: Тест одиночного view c опциями
|
||||
description: Тесты view
|
||||
template: tests:templates/test_markdown
|
||||
view:
|
||||
tests.views.test4: a
|
||||
---
|
||||
|
||||
Hello World!
|
|
@ -49,6 +49,12 @@ def test_view(pages, fake_request, config):
|
|||
assert view.process_yaml().text == 'Hello World! View1'
|
||||
|
||||
|
||||
def test_view_with_options(pages, fake_request, config):
|
||||
from flatfilecms.views.pages import PagesView
|
||||
view = PagesView(pages['view-with-options'], fake_request)
|
||||
assert view.process_yaml().text == 'Hello World! View4(a)'
|
||||
|
||||
|
||||
def test_views(pages, fake_request, config):
|
||||
from flatfilecms.views.pages import PagesView
|
||||
view = PagesView(pages['views'], fake_request)
|
||||
|
|
|
@ -6,5 +6,11 @@ def test2(self):
|
|||
self.context.page['content'] += ' View2'
|
||||
|
||||
|
||||
def test3(self, **kwargs):
|
||||
self.context.page['content'] += f" View3(a:{kwargs['a']}, b:{kwargs['b']})"
|
||||
def test3(self, options):
|
||||
self.context.page['content'] += \
|
||||
f" View3(a:{options['a']}, b:{options['b']})"
|
||||
|
||||
|
||||
def test4(self, options):
|
||||
self.context.page['content'] += \
|
||||
f" View4({options})"
|
||||
|
|
Reference in New Issue