Пример #1
0
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)
Пример #2
0
 def test_select_field(self):
     field = fields.Select(['male', 'female'])
     assert_equal(field.output("sex", self.user), "male")
     invalid = User('foo', sex='alien')
     assert_raises(
         MarshallingError,
         lambda: field.output('sex', invalid),
     )
Пример #3
0
class StrainerSchema(Schema):
    def __init__(self, strainer, *args, **kwargs):
        self._strainer = strainer
        kwargs.setdefault('many', True)
        # todo: make_object gets called unless strict is true..
        #        kwargs['strict'] = True # must be strict!
        super(StrainerSchema, self).__init__(*args, **kwargs)

    name = fields.String(required=True)
    find = fields.Select(['any', 'all'], default='any')
    # todo: validator for values
    values = fields.List(fields.String, allow_none=True)
    action = fields.String(default='contains')
    not_ = fields.Bool(default=False, attribute='not')
    """ :returns """

    def make_object(self, data):
        # todo: this gets called even when there are errors, unless strict is set
        try:
            entry = self._strainer.get(data['name'])
            column = entry.column
            column_filter = column_matcher(column,
                                           data.get('action', 'contains'))
        except KeyError:
            return data
        values = data.get('values', None)
        print(values)
        if not values:
            f = column_filter(column, None)
        else:
            reduce = lambda *args: args[0]
            if len(values) > 1:
                if data.get('find', 'any') != 'any':
                    reduce = sql_and
                else:
                    reduce = sql_or
            f = reduce(*(column_filter(column, x) for x in values))
        if data.get('not_'):
            f = sql_not(f)
        data['filter'] = f
        return data
Пример #4
0
 def test_select_field(self, user):
     field = fields.Select(['male', 'female', 'transexual', 'asexual'])
     assert field.serialize("sex", user) == "male"
     invalid = User('foo', sex='alien')
     with pytest.raises(MarshallingError):
         field.serialize('sex', invalid)
Пример #5
0
class CchValSchema(Schema):
    name = fields.String(position=0, required=True)
    datetime = fields.DateTime(position=1, format='%Y/%m/%d %H:%M')
    season = fields.Select(position=2, choices=[0, 1])
    ai = fields.Integer(position=3)
    ao = fields.Integer(position=4, allow_none=True)
Пример #6
0
 def test_select_field(self):
     field = fields.Select(['male', 'female'])
     assert field.output("sex", self.user) == "male"
     invalid = User('foo', sex='alien')
     with pytest.raises(MarshallingError):
         field.output('sex', invalid)
Пример #7
0
class ColorSchema(Schema):
    color = fields.Select([C.red, C.blue, C.green])
Пример #8
0
def select_wrap(pairs, *args, **kwargs):
    choices = [p[0] for p in pairs]
    kwargs["pairs"] = pairs
    return fields.Select(choices, *args, **kwargs)