From 4ba8c2852312cc9e7d82c0c4ceb09d370e21ddf8 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Mon, 14 Jul 2008 20:46:19 +0000 Subject: Really allow views to be functions. --- repoze/bfg/sampleapp/configure.zcml | 2 +- repoze/bfg/sampleapp/templates/blog_entry.pt | 2 +- repoze/bfg/sampleapp/templates/blog_entry_add.pt | 8 ++++---- repoze/bfg/sampleapp/views.py | 8 ++++---- repoze/bfg/wsgiadapter.py | 12 +++++++++++- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/repoze/bfg/sampleapp/configure.zcml b/repoze/bfg/sampleapp/configure.zcml index e026a12f2..374a93090 100644 --- a/repoze/bfg/sampleapp/configure.zcml +++ b/repoze/bfg/sampleapp/configure.zcml @@ -18,7 +18,7 @@ permission="repoze.view" /> - + Up

${title}

by ${author}

-
+
diff --git a/repoze/bfg/sampleapp/templates/blog_entry_add.pt b/repoze/bfg/sampleapp/templates/blog_entry_add.pt index 101163b44..f06042c03 100644 --- a/repoze/bfg/sampleapp/templates/blog_entry_add.pt +++ b/repoze/bfg/sampleapp/templates/blog_entry_add.pt @@ -9,16 +9,16 @@ - + - + - + diff --git a/repoze/bfg/sampleapp/views.py b/repoze/bfg/sampleapp/views.py index ba68317f4..23e0cf020 100644 --- a/repoze/bfg/sampleapp/views.py +++ b/repoze/bfg/sampleapp/views.py @@ -22,8 +22,8 @@ def blog_default_view(context, request): } ) - return render_template('templates/blog.pt', name=context.__name__, - entries=entrydata) + return render_template('templates/blog.pt', name=context.__name__, + entries=entrydata) def blog_entry_default_view(context, request): info = { @@ -67,8 +67,8 @@ def blog_entry_add_view(context, request): new_entry = BlogEntry(name, title, body, author) context[name] = new_entry return HTTPFound(location='/') - else: - return render_template('templates/blog_entry_add.pt', **info) + + return render_template('templates/blog_entry_add.pt', **info) def contents_view(context, request): return render_template('templates/contents.pt', context=context) diff --git a/repoze/bfg/wsgiadapter.py b/repoze/bfg/wsgiadapter.py index 16effe1a5..9b35c6aa2 100644 --- a/repoze/bfg/wsgiadapter.py +++ b/repoze/bfg/wsgiadapter.py @@ -15,6 +15,13 @@ class IViewSecurityPolicy(Interface): otherwise it should return a WSGI application representing an unauthorized view""" +def isResponse(ob): + if ( hasattr(ob, 'app_iter') and hasattr(ob, 'headerlist') and + hasattr(ob, 'status') ): + if ( hasattr(ob.app_iter, '__iter__') and + hasattr(ob.headerlist, '__iter__') ): + return True + class NaiveWSGIViewAdapter: classProvides(IWSGIApplicationFactory) implements(IWSGIApplication) @@ -44,7 +51,10 @@ class NaiveWSGIViewAdapter: 'start_response':start_response, } - response = mapply(view, positional = (), keyword = kwdict) + if isResponse(view): + response = view + else: + response = mapply(view, positional = (), keyword = kwdict) if not catch_response: catch_response = (response.status, response.headerlist) start_response(*catch_response) -- cgit v1.2.3
Title${title}
Author${author}
Body