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:
|
if 'view' in self.context.page:
|
||||||
r = DottedNameResolver()
|
r = DottedNameResolver()
|
||||||
if isinstance(self.context.page['view'], str):
|
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:
|
else:
|
||||||
for view in self.context.page['view']:
|
for view in self.context.page['view']:
|
||||||
if isinstance(view, str):
|
if isinstance(view, str):
|
||||||
r.resolve(view)(self)
|
response = r.resolve(view)(self)
|
||||||
|
if response:
|
||||||
|
return response
|
||||||
else:
|
else:
|
||||||
for name, kw in view.items():
|
for name, options in view.items():
|
||||||
r.resolve(name)(self, **kw)
|
response = r.resolve(name)(self, options)
|
||||||
|
if response:
|
||||||
|
return response
|
||||||
post = self.context.page
|
post = self.context.page
|
||||||
if 'redirect' in post:
|
|
||||||
return HTTPFound(location=post['redirect'])
|
|
||||||
if 'menu' not in post:
|
if 'menu' not in post:
|
||||||
post['menu'] = yaml.load(
|
post['menu'] = yaml.load(
|
||||||
AssetResolver().resolve(
|
AssetResolver().resolve(
|
||||||
|
@ -60,10 +69,9 @@ class PagesView:
|
||||||
'{0}.jinja2'.format(
|
'{0}.jinja2'.format(
|
||||||
post.get('template', 'default')),
|
post.get('template', 'default')),
|
||||||
post,
|
post,
|
||||||
request=self.request
|
request=self.request,
|
||||||
|
response=self.request.response
|
||||||
)
|
)
|
||||||
if 'content_type' in post:
|
|
||||||
response.content_type = post['content_type']
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@view_config(context=Jinja2)
|
@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'
|
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):
|
def test_views(pages, fake_request, config):
|
||||||
from flatfilecms.views.pages import PagesView
|
from flatfilecms.views.pages import PagesView
|
||||||
view = PagesView(pages['views'], fake_request)
|
view = PagesView(pages['views'], fake_request)
|
||||||
|
|
|
@ -6,5 +6,11 @@ def test2(self):
|
||||||
self.context.page['content'] += ' View2'
|
self.context.page['content'] += ' View2'
|
||||||
|
|
||||||
|
|
||||||
def test3(self, **kwargs):
|
def test3(self, options):
|
||||||
self.context.page['content'] += f" View3(a:{kwargs['a']}, b:{kwargs['b']})"
|
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