Cool. Maybe add a slice for this:
http://www.web2pyslices.com/main/default/index
On Thursday, June 9, 2011 5:13:43 PM UTC-4, Jim Karsten wrote:
> This validator handles a case where at least one of several fields must be
> non-blank.
>
> class IS_NOT_ALL_EMPTY(object):
> """Class representing a validator requiring at least one non-empty field in
> a set. """
> def __init__(self, others,
> error_message='Enter a value in at least one field'):
> self.others = others
> self.error_message = error_message
>
> def __call__(self, value):
> okay = (value, None)
> error = (value, self.error_message)
> # Return okay either the 'value', or one of self.others is not empty.
> values = []
> values.append(value)
> values.extend(self.others)
> empties = []
> for v in values:
> unused_v, empty = is_empty(v)
> empties.append(empty)
> # Example empties == [True, True, False]
> # If one False exists, it's valid
> if reduce(lambda x, y: x and y, empties):
> return error
> return okay
>
> Usage:
>
> db.define_table('contact',
> Field('name', 'string'
> requires=IS_NOT_ALL_EMPTY([request.vars.organization],
> error_message='Enter a name or an organization'),
> ),
> Field('organization', 'string',
> requires=IS_NOT_ALL_EMPTY([request.vars.name],
> error_message='Enter a name or an organization'),
> ))
>
> Cheers,
> Jim Karsten