rendered paste body
class ValidBirthDay(validators.FancyValidator):
"""Validator to test for validity of a date from given month, day and year.
"""
messages = {'invalid': "The birthday date isn't valid, minimum age is 18"}
__unpackargs__ = ('month', 'day', 'year', 'minAge', 'maxAge',)
def validate_python(self, field_dict, state):
bdate = date(field_dict[self.year], field_dict[self.month], field_dict[self.day])
dt_now = date.today()
if self.minAge <= (dt_now - bdate).days / 365 <= self.maxAge:
return bdate
print self.message('invalid', state), state, field_dict
raise validators.Invalid(
self.message('invalid', state), field_dict, state)
class NewUserSchema(validators.Schema):
user_name = validators.All(validators.UnicodeString(not_empty=True, min=5,
max=16, strip=True),
UniqueUsername())
email = validators.All(validators.Email(not_empty=True, max=255),
UniqueEmail())
gender = validators.OneOf(['Male','Female'])
password1 = validators.UnicodeString(not_empty=True, min=4, max=40)
password2 = validators.UnicodeString(not_empty=True, min=4, max=40)
birth_month = validators.Int(not_empty=True)
birth_day = validators.Int(not_empty=True)
birth_year= validators.Int(not_empty=True)
zip_code = validators.PostalCode(not_empty=True)
country = validators.UnicodeString(not_empty=True)
display_name = validators.UnicodeString(not_empty=True)
chained_validators = [validators.FieldsMatch('password1', 'password2'),
ValidBirthDay('birth_month', 'birth_day', 'birth_year', 18, 100)]