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

