+class UniqueUsername(FancyValidator):
+ def _to_python(self, value, state):
+ u = meta.Session.query(model.User).\
+ filter(model.User.username == value).\
+ first()
+ if u:
+ raise Invalid(
+ 'That username already exists',
+ value, state)
+ return value
+
+
+class NewUserSchema(Schema):
+ "Validate new users."
+ allow_extra_fields = False
+ username = UniqueUsername(not_empty=True)
+ password = validators.String(if_missing=None)
+ confirm_password = validators.String(if_missing=None)
+ name = validators.String(not_empty=False)
+ resident = validators.StringBoolean(not_empty=True)
+ chained_validators = [
+ validators.FieldsMatch('password', 'confirm_password'),
+ ]
+
+