All pastes #370308 Raw Edit

Anonymous

public text v1 · immutable
#370308 ·published 2007-02-24 13:22 UTC
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)]