Source

formhelpers / formhelpers / controllers / comment.py

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 = [
    ('the internet', 'internet'),
    ('from a friend', 'friend'),
    ('on the radio (really?)', 'radio'),
]

class CommentForm(formencode.Schema):
    allow_extra_fields = True
    filter_extra_fields = True
    name = formencode.validators.String(not_empty=True)
    heard = formencode.validators.OneOf([c[1] 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')
        
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.