summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-08 15:34:54 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-08 15:34:54 +0000
commit627152500bc9621a9dde766ae429d6e717043df9 (patch)
treebc35618fe5bf8215fed8cb44c5e22f9ff1020a65
parent2793484d3e201515cbc9a5a5dd5106891a4b37bc (diff)
downloadpyramid-627152500bc9621a9dde766ae429d6e717043df9.tar.gz
pyramid-627152500bc9621a9dde766ae429d6e717043df9.tar.bz2
pyramid-627152500bc9621a9dde766ae429d6e717043df9.zip
Fix a thinko in metaconfigure.
Allow blog entries to be created.
-rw-r--r--repoze/bfg/metaconfigure.py2
-rw-r--r--repoze/bfg/sampleapp/browser.py18
-rw-r--r--repoze/bfg/sampleapp/configure.zcml16
-rw-r--r--repoze/bfg/sampleapp/www/blog.pt3
-rw-r--r--repoze/bfg/sampleapp/www/blog_entry_add.pt26
5 files changed, 64 insertions, 1 deletions
diff --git a/repoze/bfg/metaconfigure.py b/repoze/bfg/metaconfigure.py
index f958d1f2f..bc136055a 100644
--- a/repoze/bfg/metaconfigure.py
+++ b/repoze/bfg/metaconfigure.py
@@ -41,7 +41,7 @@ def page(_context,
if not os.path.isfile(template):
raise ConfigurationError("No such file", template)
- template_inst = PageTemplateFile(template)
+ template_inst = PageTemplateFile(template)
def view_factory(context, request):
if template:
diff --git a/repoze/bfg/sampleapp/browser.py b/repoze/bfg/sampleapp/browser.py
index 5dc354736..755c6beb1 100644
--- a/repoze/bfg/sampleapp/browser.py
+++ b/repoze/bfg/sampleapp/browser.py
@@ -1,6 +1,10 @@
+import time
+
from webob import Response
+from webob.exc import HTTPFound
from repoze.bfg.template import TemplateView
+from repoze.bfg.sampleapp.models import BlogEntry
def datestring(dt):
return dt.strftime('%Y-%m-%dT%H:%M:%S')
@@ -29,3 +33,17 @@ class BlogEntryDefaultView(TemplateView):
'created':datestring(self.context.created),
}
+class BlogEntryAddView(object):
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+
+ def __call__(self):
+ author = self.request.params['author']
+ body = self.request.params['body']
+ title = self.request.params['title']
+ name = str(time.time())
+ new_entry = BlogEntry(name, title, body, author)
+ self.context[name] = new_entry
+ return HTTPFound(location='/')
+
diff --git a/repoze/bfg/sampleapp/configure.zcml b/repoze/bfg/sampleapp/configure.zcml
index 0e58126a7..8b7a3de7c 100644
--- a/repoze/bfg/sampleapp/configure.zcml
+++ b/repoze/bfg/sampleapp/configure.zcml
@@ -20,6 +20,22 @@
permission="repoze.view"
/>
+ <!-- the add template for a BlogEntry -->
+ <browser:page
+ for=".models.IBlog"
+ template="www/blog_entry_add.pt"
+ name="add_entry.html"
+ permission="repoze.view"
+ />
+
+ <!-- the add handler for a BlogEntry -->
+ <browser:page
+ for=".models.IBlog"
+ class=".browser.BlogEntryAddView"
+ permission="repoze.view"
+ name="add_entry_handler"
+ />
+
<!-- the contents view for any mapping (shows dict members) -->
<browser:page
for=".models.IMapping"
diff --git a/repoze/bfg/sampleapp/www/blog.pt b/repoze/bfg/sampleapp/www/blog.pt
index ffe8659df..8ccbe56a2 100644
--- a/repoze/bfg/sampleapp/www/blog.pt
+++ b/repoze/bfg/sampleapp/www/blog.pt
@@ -15,5 +15,8 @@
<td>${entry.created}</td>
</tr>
</table>
+ <p>
+ <a href="add_entry.html">Add blog entry</a>
+ </p>
</body>
</html>
diff --git a/repoze/bfg/sampleapp/www/blog_entry_add.pt b/repoze/bfg/sampleapp/www/blog_entry_add.pt
new file mode 100644
index 000000000..b41ae4b02
--- /dev/null
+++ b/repoze/bfg/sampleapp/www/blog_entry_add.pt
@@ -0,0 +1,26 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:tal="http://xml.zope.org/namespaces/tal">
+<head></head>
+<body>
+ <form action="add_entry_handler" method="POST">
+ <h1>Add a blog entry</h1>
+ <table border="0">
+ <tr>
+ <th>Title</th>
+ <td><input type="text" name="title"/></td>
+ </tr>
+ <tr>
+ <th>Author</th>
+ <td><input type="text" name="author"/></td>
+ </tr>
+ <tr>
+ <th>Body</th>
+ <td><textarea name="body" rows="10" value=""> </textarea></td>
+ </tr>
+ <tr>
+ <td><input type="submit" name="add" value="Add"/></td>
+ </tr>
+ </table>
+ </form>
+</body>
+</html>