Source

formhelpers / formhelpers / controllers / comment.py

Full commit
import logging

from pylons import request, response, session
from pylons import tmpl_context as c
from pylons.controllers.util import abort

from formhelpers.lib.mako_forms import validate

from formhelpers.lib.base import BaseController, render

log = logging.getLogger(__name__)

import formencode

HEARD_CHOICES = [
    ('internet', 'the internet'),
    ('friend', 'from a friend'),
    ('radio', 'on the radio (really?)'),
]

class CommentForm(formencode.Schema):
    allow_extra_fields = True
    filter_extra_fields = True
    name = formencode.validators.String(not_empty=True)
    heard = formencode.validators.OneOf([c[0] for c in HEARD_CHOICES], not_empty=True)
    comment = formencode.validators.String(not_empty=True)

class CommentController(BaseController):
    def index(self):
        if not hasattr(c, 'comment_form'):
            c.comment_form = CommentForm().from_python({})
        c.heard_choices = HEARD_CHOICES
        return render('/comment_form.html')

    @validate("comment_form", CommentForm, input_controller=index)
    def post(self):
        c.name = self.form_result['name']
        return render('/thanks.html')