On Thu, Feb 11, 2010 at 9:54 AM, Mike Burrows <m...@asplake.co.uk> wrote:
>
> Personally, I would be happy to see a decorator-free Pylons but I say
> that without knowing what our action methods will look like without
> them!

You can do it now; the trouble is you either have to work up from a
minimal try/except or work down from the @validate code. The problem
with the @validate code is it's hard to separate the universal pattern
from the specific argument slinging the decorator does.

The pattern is something like this (untested):

'''
try:
    val = MyValidator()
    data = val.to_python(request.params, None)
except formencode.Invalid, e:
    html = self.form_method()
    html = htmlfill.render(html, request.params,
        e.unpack_errors(), force_defaults=False)
    return html
# Success, perform action using ``data``.
'''

The render args are the source HTML, input values, and errors.
``e.unpack_errors()`` converts the error dict from a nested structure
(if applicable) to the flat HTML format. ``force_defaults=False``
prevents htmlfill from unsetting radio buttons and selects.

I would read the source code for render (formencode/htmlfill.py) and
Invalid (formencode/api.py) to get a feel for what exactly it's doing
and the possible arguments.

-- 
Mike Orr <sluggos...@gmail.com>

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to pylons-disc...@googlegroups.com.
To unsubscribe from this group, send email to 
pylons-discuss+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en.

Reply via email to