summaryrefslogtreecommitdiff
path: root/repoze/bfg/sampleapp/views.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-07-14 18:27:19 +0000
committerChris McDonough <chrism@agendaless.com>2008-07-14 18:27:19 +0000
commited334fdfefcdfdc570cfcd42aff171b177b76240 (patch)
treee716196772096510a99f8445945f97c4af78680c /repoze/bfg/sampleapp/views.py
parentbaf2406e1999160ad5d96e3adbeb525502a6d98b (diff)
downloadpyramid-ed334fdfefcdfdc570cfcd42aff171b177b76240.tar.gz
pyramid-ed334fdfefcdfdc570cfcd42aff171b177b76240.tar.bz2
pyramid-ed334fdfefcdfdc570cfcd42aff171b177b76240.zip
Render templates explicitly in views.
Diffstat (limited to 'repoze/bfg/sampleapp/views.py')
-rw-r--r--repoze/bfg/sampleapp/views.py97
1 files changed, 61 insertions, 36 deletions
diff --git a/repoze/bfg/sampleapp/views.py b/repoze/bfg/sampleapp/views.py
index 196fce703..8e2ddd467 100644
--- a/repoze/bfg/sampleapp/views.py
+++ b/repoze/bfg/sampleapp/views.py
@@ -1,49 +1,74 @@
+import formencode
import time
from webob.exc import HTTPFound
-from repoze.bfg.view import TemplateView
-from repoze.bfg.view import View
-
+from repoze.bfg.template import render_template
from repoze.bfg.sampleapp.models import BlogEntry
def datestring(dt):
return dt.strftime('%Y-%m-%d %H:%M:%S')
-class BlogDefaultView(TemplateView):
-
- def getInfo(self):
- entrydata = []
- for name, entry in self.context.items():
- entrydata.append(
- {
- 'name':name,
- 'title':entry.title,
- 'author':entry.author,
- 'created':datestring(entry.created),
- }
- )
- return {'name':self.context.__name__, 'entries':entrydata}
-
-class BlogEntryDefaultView(TemplateView):
-
- def getInfo(self):
- return {
- 'name':self.context.__name__,
- 'title':self.context.title,
- 'body':self.context.body,
- 'author':self.context.author,
- 'created':datestring(self.context.created),
+def blog_default_view(context, request):
+ entrydata = []
+ for name, entry in self.context.items():
+ entrydata.append(
+ {
+ 'name':name,
+ 'title':entry.title,
+ 'author':entry.author,
+ 'created':datestring(entry.created),
+ 'message':self.request.params.get('message'),
}
+ )
+
+ info = {'name':self.context.__name__, entries:entrydata}
+ return render_template('templates/blog.pt', info)
+
+def blog_entry_default_view(context, request):
+ info = {
+ 'name':self.context.__name__,
+ 'title':self.context.title,
+ 'body':self.context.body,
+ 'author':self.context.author,
+ 'created':datestring(self.context.created),
+ }
+ return render_template('templates/blog_entry.pt', **info)
+
+class BlogAddSchema(formencode.Schema):
+ allow_extra_fields = True
+ author = formencode.validators.NotEmpty()
+ body = formencode.validators.NotEmpty()
+ title = formencode.validators.NotEmpty()
+
+def blog_entry_add_view(context, request):
+ params = self.request.params
+
+ message = None
-class BlogEntryAddView(View):
+ author = params.get('author', '')
+ body = params.get('body', '')
+ title = params.get('title', '')
+ info = dict(request=self.request,
+ author=author, body=body, title=title, message=None)
- 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='/')
+ if params.has_key('form.submitted'):
+ schema = BlogAddSchema()
+ try:
+ form = schema.to_python(params)
+ except formencode.validators.Invalid, why:
+ message = str(why)
+ info['message'] = message
+ else:
+ author = form['author']
+ body = form['body']
+ title = form['title']
+ name = str(time.time())
+ new_entry = BlogEntry(name, title, body, author)
+ self.context[name] = new_entry
+ return HTTPFound(location='/')
+ else:
+ return render_template('templates/blog_entry_add.pt', **info)
+def contents_view(context, request):
+ return render_template('templates/contents.pt', context=context)