From ed334fdfefcdfdc570cfcd42aff171b177b76240 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Mon, 14 Jul 2008 18:27:19 +0000 Subject: Render templates explicitly in views. --- repoze/bfg/sampleapp/views.py | 97 +++++++++++++++++++++++++++---------------- 1 file changed, 61 insertions(+), 36 deletions(-) (limited to 'repoze/bfg/sampleapp/views.py') 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) -- cgit v1.2.3