class UserSchema(Schema): name = fields.String() age = fields.Float() created = fields.DateTime() created_formatted = fields.DateTime(format="%Y-%m-%d", attribute="created") created_iso = fields.DateTime(format="iso", attribute="created") updated = fields.DateTime() updated_local = fields.LocalDateTime(attribute="updated") species = fields.String(attribute="SPECIES") id = fields.String(default="no-id") uppername = Uppercased(attribute='name') homepage = fields.Url() email = fields.Email() balance = fields.Price() is_old = fields.Method("get_is_old") lowername = fields.Function(lambda obj: obj.name.lower()) registered = fields.Boolean() hair_colors = fields.List(fields.Raw) sex_choices = fields.List(fields.Raw) finger_count = fields.Integer() uid = fields.UUID() time_registered = fields.Time() birthdate = fields.Date() since_created = fields.TimeDelta() sex = fields.Select(['male', 'female']) def get_is_old(self, obj): try: return obj.age > 80 except TypeError as te: raise ValidationError(text_type(te)) def make_object(self, data): return User(**data)
class UserMetaSchema(Schema): """The equivalent of the UserSchema, using the ``fields`` option.""" uppername = Uppercased(attribute='name') balance = fields.Price() is_old = fields.Method("get_is_old") lowername = fields.Function(lambda obj: obj.name.lower()) updated_local = fields.LocalDateTime(attribute="updated") species = fields.String(attribute="SPECIES") homepage = fields.Url() email = fields.Email() def get_is_old(self, obj): try: return obj.age > 80 except TypeError as te: raise ValidationError(te) class Meta: fields = ('name', 'age', 'created', 'updated', 'id', 'homepage', 'uppername', 'email', 'balance', 'is_old', 'lowername', "updated_local", "species", 'registered', 'hair_colors', 'sex_choices', "finger_count", 'uid', 'time_registered', 'birthdate', 'since_created')
def test_price_field_deserialization(self): field = fields.Price() assert field.deserialize('12.345') == '12.35'
def test_price_field_default(self, user): field = fields.Price() user.balance = None assert field.serialize('price', user) == '0.00'
def test_price_field(self, user): field = fields.Price() user.balance = 100 assert field.serialize('balance', user) == '100.00'
def test_price_field_none(self, user): field = fields.Price() user.balance = None assert field.serialize('balance', user) is None