Пример #1
0
class UserSchema(Schema):
    id = fields.Integer()
    username = fields.String()
    firstname = fields.String()
    lastname = fields.String()
    email = fields.String()
    role = fields.Embed(schema=RoleSchema)
Пример #2
0
class ApiPlainKeySchema(Schema):
    id = fields.Integer()
    role = fields.Embed(schema=RoleSchema)
    domains = fields.Embed(schema=DomainSchema, many=True)
    accounts = fields.Embed(schema=AccountSummarySchema, many=True)
    description = fields.String()
    plain_key = fields.String()
Пример #3
0
class AccountSchema(Schema):
    id = fields.Integer()
    name = fields.String()
    description = fields.String()
    contact = fields.String()
    mail = fields.String()
    domains = fields.Embed(schema=DomainSchema, many=True)
Пример #4
0
class UserDetailedSchema(Schema):
    id = fields.Integer()
    username = fields.String()
    firstname = fields.String()
    lastname = fields.String()
    email = fields.String()
    role = fields.Embed(schema=RoleSchema)
    accounts = fields.Embed(schema=AccountSummarySchema)
Пример #5
0
 class SomeSchema(schema.Schema):
     at__foo = fields.String(attr='foo')
     dash__foo = fields.String(attr='foo')
     dot__foo = fields.String(attr='foo')
     hash__foo = fields.String(attr='foo')
     plus__foo = fields.String(attr='foo')
     nil__at__foo = fields.String(attr='foo')
     nil__class = fields.String(attr='foo')
Пример #6
0
    def test_schema_field_order_1(self):
        '''Test if fields are in the expected order.'''
        # this test is rather long. surely there is a better way to do this
        field1 = fields.String()
        field2 = fields.String()
        field3 = fields.String()
        field4 = fields.String()
        field5 = fields.String()
        field6 = fields.String()
        field7 = fields.String()
        field8 = fields.String()
        field9 = fields.String()

        # to test overrides
        new_field4 = fields.String()
        new_field5 = fields.String()

        class TestSchema1(schema.Schema):
            one = field1
            two = field2
            three = field3
            four = field4
            five = field5

        test_instance1 = TestSchema1()
        expected = OrderedDict([
            ('one', field1),
            ('two', field2),
            ('three', field3),
            ('four', field4),
            ('five', field5),
        ])
        assert TestSchema1.__fields__ == expected
        assert test_instance1._fields == expected

        class TestMixin(schema.Schema):
            five = new_field5
            six = field6

        # should NOT override TestSchema1's field5
        class TestSchema2(TestSchema1, TestMixin):
            pass

        test_instance2 = TestSchema2()
        expected = OrderedDict([
            ('one', field1),
            ('two', field2),
            ('three', field3),
            ('four', field4),
            ('five', field5),
            ('six', field6),
        ])
        assert TestSchema2.__fields__ == expected
        assert test_instance2._fields == expected

        # SHOULD override TestSchema1's field5. Also, different order.
        class TestSchema3(TestMixin, TestSchema1):
            pass

        test_instance3 = TestSchema3()
        expected = OrderedDict([
            ('five', new_field5),
            ('six', field6),
            ('one', field1),
            ('two', field2),
            ('three', field3),
            ('four', field4),
        ])
        assert TestSchema3.__fields__ == expected
        assert test_instance3._fields == expected

        class TestSchema4(TestSchema1):
            four = new_field4  # this should replace inherited
            six = field6  # this should land afterwards
            seven = field7  # this should land afterwards
            __lima_args__ = {
                'include':
                OrderedDict([
                    ('five', new_field5),  # this should replace inherited
                    ('eight', field8),  # this sould land afterwards
                    ('nine', field9),  # this sould land afterwards
                ])
            }

        test_instance4 = TestSchema4()
        expected = OrderedDict([
            ('one', field1),
            ('two', field2),
            ('three', field3),
            ('four', new_field4),
            ('five', new_field5),
            ('six', field6),
            ('seven', field7),
            ('eight', field8),
            ('nine', field9),
        ])
        assert TestSchema4.__fields__ == expected
        assert test_instance4._fields == expected

        # see if only/exclude don't mess up order
        class TestSchema5(TestSchema1):
            __lima_args__ = {'only': ['three', 'five', 'one']}

        class TestSchema6(TestSchema1):
            __lima_args__ = {'exclude': ['four', 'two']}

        test_instance5 = TestSchema5()
        test_instance6 = TestSchema6()
        test_instance1a = TestSchema1(only=['three', 'five', 'one'])
        test_instance1b = TestSchema1(exclude=['four', 'two'])
        expected = OrderedDict([
            ('one', field1),
            ('three', field3),
            ('five', field5),
        ])
        assert TestSchema5.__fields__ == expected
        assert test_instance5._fields == expected
        assert TestSchema6.__fields__ == expected
        assert test_instance6._fields == expected
        assert test_instance1a._fields == expected
        assert test_instance1b._fields == expected

        # see if include gets placed at the position of __lima_args__
        class TestSchema7(schema.Schema):
            one = field1
            two = field2
            __lima_args__ = {
                'include': OrderedDict([('three', field3), ('four', field4)]),
                'exclude': 'six'
            }
            five = field5
            six = field6
            seven = field7

        test_instance7 = TestSchema7()
        expected = OrderedDict([
            ('one', field1),
            ('two', field2),
            ('three', field3),
            ('four', field4),
            ('five', field5),
            ('seven', field7),
        ])
        assert TestSchema7.__fields__ == expected
        assert test_instance7._fields == expected
Пример #7
0
class FieldWithGetterArgSchema(schema.Schema):
    full_name = fields.String(
        get=lambda obj: '{} {}'.format(obj.title, obj.name))
Пример #8
0
def str_field():
    return fields.String()
Пример #9
0
 class ExoticFieldNamesSchema(schema.Schema):
     __lima_args__ = {
         'include':
         {name: fields.String(attr='foo')
          for name in exotic_names}
     }
Пример #10
0
class KnightListSchema(schema.Schema):
    title = fields.String(key=0)
    name = fields.String(key=1)
    number = fields.Integer(key=2)
    born = fields.Date(key=3)
Пример #11
0
class CoverageSchema(Schema):
    id = fields.String(attr='_id')
    name = fields.String()
Пример #12
0
 class EmbeddingSchema(schema.Schema):
     another_field = fields.String()
     # here we provide a schema _instance_. the kwarg "many" is unnecessary
     incorrect_embed_field = fields.Embed(schema=embed_schema, many=True)
Пример #13
0
 class TestSchema(schema.Schema):
     foo = fields.String()
     foo.attr = 'class'  # 'class' is a keyword
Пример #14
0
 class TestSchema(schema.Schema):
     __lima_args__ = {
         'include': {
             'not;an-identifier': fields.String(attr='but_with_attr')
         }
     }
Пример #15
0
class NonLocalSchema(schema.Schema):
    foo = fields.String()
Пример #16
0
 class TestSchema(schema.Schema):
     foo = fields.String()
     foo.attr = 'this-is@not;an+identifier'
Пример #17
0
class AccountSummarySchema(Schema):
    id = fields.Integer()
    name = fields.String()
    domains = fields.Embed(schema=DomainSchema, many=True)
Пример #18
0
class ApiKeySummarySchema(Schema):
    id = fields.Integer()
    description = fields.String()
Пример #19
0
class DomainSchema(Schema):
    id = fields.Integer()
    name = fields.String()
Пример #20
0
class AccountSummarySchema(Schema):
    id = fields.Integer()
    name = fields.String()
Пример #21
0
class ApiKeySchema(Schema):
    id = fields.Integer()
    role = fields.Embed(schema=RoleSchema)
    domains = fields.Embed(schema=DomainSchema, many=True)
    description = fields.String()
    key = fields.String()
Пример #22
0
class RoleSchema(Schema):
    id = fields.Integer()
    name = fields.String()
Пример #23
0
class KnightSchema(schema.Schema):
    title = fields.String()
    name = fields.String()
    number = fields.Integer()
    born = fields.Date()
Пример #24
0
 class TestSchema(schema.Schema):
     __lima_args__ = {'include': {'not@an-identifier': fields.String()}}
Пример #25
0
class KnightDictSchema(schema.Schema):
    title = fields.String(key='title')
    name = fields.String(key='name')
    number = fields.Integer(key='number')
    born = fields.Date(key='born')
Пример #26
0
 class TestSchema(schema.Schema):
     __lima_args__ = {'include': {'class': fields.String()}}
Пример #27
0
 class EmbedSchema(schema.Schema):
     some_field = fields.String()
Пример #28
0
 class TestSchema(schema.Schema):
     foo = fields.String()
Пример #29
0
class SomeSchema(schema.Schema):
    '''Schema for SomeClass (to test linked object fields).'''
    name = fields.String()
    number = fields.Integer()