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/configure.zcml | 18 +---- repoze/bfg/sampleapp/templates/blog.pt | 6 +- repoze/bfg/sampleapp/templates/blog_entry.pt | 6 +- repoze/bfg/sampleapp/templates/blog_entry_add.pt | 15 ++-- repoze/bfg/sampleapp/views.py | 97 +++++++++++++++--------- 5 files changed, 80 insertions(+), 62 deletions(-) (limited to 'repoze/bfg/sampleapp') diff --git a/repoze/bfg/sampleapp/configure.zcml b/repoze/bfg/sampleapp/configure.zcml index 5e7a83ffd..e026a12f2 100644 --- a/repoze/bfg/sampleapp/configure.zcml +++ b/repoze/bfg/sampleapp/configure.zcml @@ -7,39 +7,29 @@ - - - diff --git a/repoze/bfg/sampleapp/templates/blog.pt b/repoze/bfg/sampleapp/templates/blog.pt index 8ccbe56a2..8eb3945db 100644 --- a/repoze/bfg/sampleapp/templates/blog.pt +++ b/repoze/bfg/sampleapp/templates/blog.pt @@ -1,15 +1,15 @@ - -

Blog Name

+ +

Blog Name

- + diff --git a/repoze/bfg/sampleapp/templates/blog_entry.pt b/repoze/bfg/sampleapp/templates/blog_entry.pt index 20e1b4409..830876525 100644 --- a/repoze/bfg/sampleapp/templates/blog_entry.pt +++ b/repoze/bfg/sampleapp/templates/blog_entry.pt @@ -2,10 +2,10 @@ xmlns:tal="http://xml.zope.org/namespaces/tal"> -
+

Up

-

${info.title}

-

by ${info.author}

+

${title}

+

by ${author}

diff --git a/repoze/bfg/sampleapp/templates/blog_entry_add.pt b/repoze/bfg/sampleapp/templates/blog_entry_add.pt index b41ae4b02..101163b44 100644 --- a/repoze/bfg/sampleapp/templates/blog_entry_add.pt +++ b/repoze/bfg/sampleapp/templates/blog_entry_add.pt @@ -1,24 +1,27 @@ - + + -
+ +

Add a blog entry

Title Author Created
${entry.title} ${entry.author} ${entry.created}
- + - + - + - +
Title${title}
Author${author}
Body
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