def test_view_with_template(self): view.register_view( 'index.html', view.View, Context, template=view.template('ptah.view.tests:templates/test.pt')) self._init_ptah() res = view.render_view('index.html', Context(), self.request) self.assertEqual(res.body.strip(), '<div>My snippet</div>')
def test_view_register_view_function_requestonly(self): def render(request): return '<html>request: %s</html>'%(request is not None) view.register_view('index.html', render) self._init_ptah() context = Context() v = self._view('index.html', context, self.request) self.assertEqual(v.body, '<html>request: True</html>')
def test_view_httpresp_from_render(self): class MyView(view.View): def render(self): raise HTTPFound() view.register_view('index.html', MyView, Context) self._init_ptah() resp = view.render_view('index.html', Context(), self.request) self.assertIsInstance(resp, HTTPFound)
def test_view_register_view_function_requestonly_template(self): def render(request): return {} view.register_view('index.html', render, template = view.template('templates/test.pt')) self._init_ptah() context = Context() v = self._view('index.html', context, self.request) self.assertEqual(v.body.strip(), '<div>My snippet</div>')
def test_view_httpresp_from_update(self): class MyView(view.View): def update(self): raise HTTPForbidden() view.register_view('index.html', MyView, Context, template = view.template('templates/test.pt')) self._init_ptah() resp = view.render_view('index.html', Context(), self.request) self.assertIsInstance(resp, HTTPForbidden)
def test_view_subpath_with_template(self): class MyView(view.View): @view.subpath(renderer=Renderer(view.template('templates/test.pt'))) def validate(self): return {} view.register_view('index.html', MyView, Context) self._init_ptah() self.request.subpath = ('validate',) v = self._view('index.html', Context(), self.request) self.assertEqual(v.body.strip(), '<div>My snippet</div>')
def test_view_register_view_err1(self): # default 'render' implementation class MyView(view.View): pass view.register_view('index.html', MyView, Context) self._init_ptah() context = Context() self.assertTrue( view.render_view('index.html', context, self.request).content_length ==0)
def test_view_register_view(self): class MyView(view.View): def render(self): return '<html>view</html>' view.register_view('index.html', MyView) self._init_ptah() context = Context() v = self._view('index.html', context, self.request) self.assertEqual(v.status, '200 OK') self.assertEqual(v.content_type, 'text/html') self.assertEqual(v.body, '<html>view</html>')
def test_view_subpath_json_renderer(self): class MyView(view.View): @view.subpath(renderer=view.json) def validate(self): return {'text': 'Validate method'} view.register_view('index.html', MyView, Context) self._init_ptah() self.request.subpath = ('validate',) v = self._view('index.html', Context(), self.request) self.assertTrue(isinstance(v, Response)) self.assertEqual(v.body, '{"text": "Validate method"}')
def test_view_custom_response(self): class MyView(view.View): def render(self): response = self.request.response response.status = '202' return 'test' view.register_view('index.html', MyView, Context) self._init_ptah() res = view.render_view('index.html', Context(), self.request) self.assertEqual(res.status, '202 Accepted') self.assertEqual(res.body, 'test')
def test_view_register_view_class_requestonly(self): class MyView(object): def __init__(self, request): self.request = request def render(self): return '<html>view: %s</html>'%(self.request is not None) view.register_view('index.html', MyView) self._init_ptah() context = Context() v = self._view('index.html', context, self.request) self.assertEqual(v.body, '<html>view: True</html>')
def test_view_register_view_layout(self): class MyLayout(view.Layout): def render(self, rendered): return '<html>%s</html>'%rendered class MyView(view.View): def render(self): return 'test' view.register_view('index.html', MyView, Context) view.register_layout('', Context, klass=MyLayout) self._init_ptah() context = Context() res = view.render_view('index.html', context, self.request) self.assertTrue('<html>test</html>' in res.body)
def test_view_register_secured_view(self): from ptah.view.renderers import \ default_checkpermission, set_checkpermission def render(request): return '<html>Secured view</html>' view.register_view('index.html', render, permission = 'Protected') self._init_ptah() set_checkpermission(default_checkpermission) context = Context() v = self._view('index.html', context, self.request) self.assertEqual(v.body, '<html>Secured view</html>') class SimpleAuth(object): interface.implements(IAuthenticationPolicy) def effective_principals(self, request): return (1,2) class Authz(object): interface.implements(IAuthorizationPolicy) allowed = False def permits(self, context, princials, permission): return self.allowed config.registry.registerUtility(SimpleAuth(), IAuthenticationPolicy) config.registry.registerUtility(Authz(), IAuthorizationPolicy) set_checkpermission(default_checkpermission) context = Context() resp = self._view('index.html', context, self.request) self.assertIsInstance(resp, HTTPForbidden) Authz.allowed = True v = self._view('index.html', context, self.request) self.assertEqual(v.body, '<html>Secured view</html>')
def test_view_subpath_call(self): class MyView(view.View): @view.subpath() def validate(self): return 'Validate method' def render(self): return 'Render method' view.register_view('index.html', MyView, Context) self._init_ptah() v = self._view('index.html', Context(), self.request) self.assertEqual(v.body, 'Render method') self.request.subpath = ('validate',) v = self._view('index.html', Context(), self.request) self.assertTrue(isinstance(v, str)) self.assertEqual(v, 'Validate method')
def test_view_register_view_disable_layout1(self): class MyLayout(view.Layout): def render(self, rendered): return '<html>%s</html>'%rendered class MyView(view.View): def render(self): return 'test' view.register_view('index.html', MyView, Context, layout=None) view.register_layout('', Context, klass=MyLayout) self._init_ptah() context = Context() res = view.render_view('index.html', context, self.request) self.assertEqual(res.body, 'test') v = MyView(None, self.request) self.assertEqual(MyLayout(v, self.request).render( v.render()), '<html>test</html>')
def test_view_register_callable_permission(self): def render(request): return '<html>Secured view</html>' allowed = False def checkPermission(context, request): return allowed view.register_view('index.html', render, permission = checkPermission) self._init_ptah() context = Context() self.assertRaises( HTTPForbidden, self._view, 'index.html', context, self.request) allowed = True v = self._view('index.html', context, self.request) self.assertEqual(v.body, '<html>Secured view</html>')
def test_view_subpath_class_requestonly(self): class MyView(object): def __init__(self, request): self.request = request @view.subpath() def validate(self): return 'Validate method: %s'%(self.request is not None) def render(self): return 'Render method' view.register_view('index.html', MyView, Context) self._init_ptah() v = self._view('index.html', Context(), self.request) self.assertEqual(v.body, 'Render method') self.request.subpath = ('validate',) v = self._view('index.html', Context(), self.request) self.assertTrue(isinstance(v, str)) self.assertEqual(v, 'Validate method: True')
class MembershipView(view.View): view.pview(route='frontend-membership', layout='page', template = view.template('newui/membership.pt')) policy = 0 def update(self): uri = authenticated_userid(self.request) user = User.getByURI(uri) info = {'email': user.email, 'policy': getattr(user, 'type', 0)} self.policy = info['policy'] self.user = user self.isAnon = user is None return info view.register_view( route='frontend-membership1', layout='page', template = view.template('newui/membership-free.pt')) view.register_view( route='frontend-membership2', layout='page', template = view.template('newui/membership1.pt')) view.register_view( route='frontend-membership3', layout='page', template = view.template('newui/membership2.pt'))
raise HTTPFound(location="/index.html") @view.pview(route="frontend-home", layout="page", template=view.template("newui/homepage.pt")) def homepage(request): return {"isanon": 1 if authenticated_userid(request) else 0} @view.pview(route="frontend-themes") def themes(request): raise HTTPFound(location="/themes/") view.register_route("frontend-home", "/index.html") view.register_route("frontend-favicon", "/favicon.ico") view.register_route("frontend-robots", "/robots.txt") view.register_route("frontend-policy", "/privacy-policy.html") view.register_route("frontend-toc", "/terms-of-service.html") view.register_route("frontend-disabled", "/disabled.html") view.register_route("frontend-404", "/404.html") view.register_route("frontend-themes", "/themes") view.register_view(route="frontend-policy", layout="page", template=view.template("newui/privacy-policy.pt")) view.register_view(route="frontend-toc", layout="page", template=view.template("newui/terms-of-service.pt")) view.register_view(route="frontend-disabled", layout="page", template=view.template("newui/disabled_site.pt")) view.register_view(route="frontend-404", layout="page", template=view.template("newui/404.pt"))