diff options
| author | Chris McDonough <chrism@agendaless.com> | 2008-07-14 20:46:19 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2008-07-14 20:46:19 +0000 |
| commit | 4ba8c2852312cc9e7d82c0c4ceb09d370e21ddf8 (patch) | |
| tree | 1697ebf6a64fca05d63952feb1059bbe42a833c4 | |
| parent | 4bbd6a3d08c64471e23adaf6e566709e0ceaf480 (diff) | |
| download | pyramid-4ba8c2852312cc9e7d82c0c4ceb09d370e21ddf8.tar.gz pyramid-4ba8c2852312cc9e7d82c0c4ceb09d370e21ddf8.tar.bz2 pyramid-4ba8c2852312cc9e7d82c0c4ceb09d370e21ddf8.zip | |
Really allow views to be functions.
| -rw-r--r-- | repoze/bfg/sampleapp/configure.zcml | 2 | ||||
| -rw-r--r-- | repoze/bfg/sampleapp/templates/blog_entry.pt | 2 | ||||
| -rw-r--r-- | repoze/bfg/sampleapp/templates/blog_entry_add.pt | 8 | ||||
| -rw-r--r-- | repoze/bfg/sampleapp/views.py | 8 | ||||
| -rw-r--r-- | 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" /> - <!-- the add template for a BlogEntry --> + <!-- the add view for a BlogEntry --> <bfg:view for=".models.IBlog" factory=".views.blog_entry_add_view" diff --git a/repoze/bfg/sampleapp/templates/blog_entry.pt b/repoze/bfg/sampleapp/templates/blog_entry.pt index 830876525..6614e4950 100644 --- a/repoze/bfg/sampleapp/templates/blog_entry.pt +++ b/repoze/bfg/sampleapp/templates/blog_entry.pt @@ -6,7 +6,7 @@ <p><a href="..">Up</a></p> <h1>${title}</h1> <p>by ${author}</p> - <div tal:content="structure info.body"></div> + <div tal:content="structure body"></div> </div> </body> </html> 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 @@ <table border="0"> <tr> <th>Title</th> - <td><input type="text" name="title"/>${title}</td> + <td><input type="text" name="title" tal:attributes="value title"/></td> </tr> <tr> <th>Author</th> - <td><input type="text" name="author"/>${author}</td> + <td><input type="text" name="author" tal:attributes="value author"/></td> </tr> <tr> <th>Body</th> - <td><textarea name="body" rows="10" cols="80"> ${body}</textarea - ></td> + <td><textarea name="body" rows="10" cols="80" tal:content="body" + ></textarea></td> </tr> <tr> <td><input type="submit" name="form.submitted" value="Add"/></td> 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) |
