Good thing you mentioned Bruno's solution. It appeared as "show quoted
text" to me, and at first glance didn't look like it contained new
text. *sorry Bruno!*

Just a side question on best practices, where should I put my little
lambda so that all files (and functions) in my app can use it? Geez,
did I mention I'm new to python too...



On Dec 1, 6:33 am, Anthony <[email protected]> wrote:
> On Wednesday, November 30, 2011 5:16:59 PM UTC-5, lyn2py wrote:
>
> > Thanks Anthony.
>
> > That's interesting syntax to use a validator!
>
> Well, the validators are mostly intended to be used for validating form
> fields. They are callable objects, so you instantiate a validator like
> IS_SLUG(), which is an object with a __call__ method that takes a value and
> validates it. The __call__ method returns a tuple, which is the (possibly
> transformed) value and either an error message or None. A few of the
> validators, such as IS_SLUG, actually transform the input value rather than
> simply checking it, so they can also be used independently for their
> transformation effects. Of course, in that case, the required syntax seems
> a bit awkward:
>
> IS_SLUG()  # creates a callable object - usually passed as the 'requires'
> arg to Field()
> IS_SLUG()('My Title')  # passes a value to the __call__ method of the
> validator object
> IS_SLUG()('My Title')[0]  # extracts the returned value, which is the first
> element of the returned tuple
>
> To make it easier, you can write your own helper:
>
> make_slug = lambda v: IS_SLUG()(v)[0]
>
> Then do:
>
> title_slug = make_slug('My Title')
>
> This is like Bruno's compute example. You could also make a more general
> helper that works with any validator:
>
> >>> transform = lambda v, validator: validator()(v)[0]
> >>> transform('my title', IS_SLUG)
> 'my-title'
> >>> transform('My Title', IS_UPPER)
>
> 'MY TITLE'
>
> Anthony

Reply via email to