Esempio n. 1
0
class UserSerializer(DynamicModelSerializer):
    class Meta:
        model = User
        name = 'user'
        name_field = 'name'
        fields = (
            'id',
            'name',
            'permissions',
            'groups',
            'location',
            'last_name',
            'display_name',
            'thumbnail_url',
            'number_of_cats',
            'profile',
            'date_of_birth',
            'favorite_pet_id',
            'favorite_pet',
            'is_dead',
        )
        deferred_fields = (
            'last_name',
            'date_of_birth',
            'display_name',
            'profile',
            'thumbnail_url',
            'favorite_pet_id',
            'favorite_pet',
            'is_dead',
        )
        read_only_fields = ('profile', )

    location = DynamicRelationField('LocationSerializer')
    permissions = DynamicRelationField('PermissionSerializer',
                                       many=True,
                                       help_text='Permissions for this user',
                                       deferred=True)
    groups = DynamicRelationField('GroupSerializer', many=True, deferred=True)
    display_name = DynamicField(source='profile.display_name', read_only=True)
    thumbnail_url = DynamicField(source='profile.thumbnail_url',
                                 read_only=True)
    number_of_cats = DynamicMethodField(requires=['location.cat_set.*'],
                                        deferred=True)

    # Don't set read_only on this field directly. Used in test for
    # Meta.read_only_fields.
    profile = DynamicRelationField('ProfileSerializer', deferred=True)
    favorite_pet = DynamicGenericRelationField(required=False)

    def get_number_of_cats(self, user):
        location = user.location
        return len(location.cat_set.all()) if location else 0
Esempio n. 2
0
class CarSerializer(DynamicModelSerializer):
    country = DynamicRelationField('CountrySerializer')
    parts = DynamicRelationField('PartSerializer',
                                 many=True,
                                 source='part_set')  # noqa
    country_name = DynamicField(source='country.name')
    country_short_name = DynamicField(source='country.short_name')

    class Meta:
        model = Car
        name_field = 'name'
        fields = ('id', 'name', 'country', 'parts', 'country_name',
                  'country_short_name')
        deferred_fields = ('name', 'country', 'parts', 'country_name',
                           'country_short_name')
Esempio n. 3
0
class LocationSerializer(DynamicModelSerializer):
    class Meta:
        defer_many_relations = False
        model = Location
        name_field = 'name'
        name = 'location'
        fields = ('id', 'name', 'users', 'user_count', 'address', 'cats',
                  'friendly_cats', 'bad_cats', 'document')

    document = DynamicFileField(allow_null=False, deferred=True)
    users = DynamicRelationField('UserSerializer',
                                 source='user_set',
                                 many=True,
                                 deferred=True)
    user_count = CountField('users', required=False, deferred=True)
    address = DynamicField(source='blob', required=False, deferred=True)
    cats = DynamicRelationField('CatSerializer',
                                source='cat_set',
                                many=True,
                                deferred=True)
    friendly_cats = DynamicRelationField('CatSerializer',
                                         many=True,
                                         deferred=True)
    bad_cats = DynamicRelationField('CatSerializer',
                                    source='annoying_cats',
                                    many=True,
                                    deferred=True)
Esempio n. 4
0
class CountsSerializer(DynamicEphemeralSerializer):
    class Meta:
        name = 'counts'

    values = DynamicField(field_type=list)
    count = CountField('values', unique=False)
    unique_count = CountField('values')
Esempio n. 5
0
class LocationGroupSerializer(DynamicEphemeralSerializer):
    class Meta:
        name = 'locationgroup'

    id = DynamicField(field_type=str)
    location = DynamicRelationField('LocationSerializer', deferred=False)
    groups = DynamicRelationField('GroupSerializer', many=True, deferred=False)
Esempio n. 6
0
class LocationSerializer(DynamicModelSerializer):
    class Meta:
        defer_many_relations = False
        model = Location
        name = 'location'
        fields = ('id', 'name', 'users', 'user_count', 'address', 'cats',
                  'friendly_cats', 'bad_cats')

    users = DynamicRelationField('UserSerializer',
                                 source='user_set',
                                 many=True,
                                 deferred=True)
    user_count = CountField('users', required=False, deferred=True)
    address = DynamicField(source='blob', required=False, deferred=True)
    cats = DynamicRelationField('CatSerializer',
                                source='cat_set',
                                many=True,
                                deferred=True)
    friendly_cats = DynamicRelationField('CatSerializer',
                                         many=True,
                                         deferred=True)
    bad_cats = DynamicRelationField('CatSerializer',
                                    source='annoying_cats',
                                    many=True,
                                    deferred=True)

    def filter_queryset(self, query):
        return query.exclude(name='Atlantis')
Esempio n. 7
0
class ProfileSerializer(DynamicModelSerializer):
    class Meta:
        model = Profile
        name = 'profile'

    user = DynamicRelationField('UserSerializer')
    user_location_name = DynamicField(source='user.location.name',
                                      read_only=True)
Esempio n. 8
0
class ProfileSerializer(DynamicModelSerializer):
    class Meta:
        model = Profile
        name = 'profile'
        fields = (
            'user',
            'display_name',
            'thumbnail_url',
            'user_location_name',
        )

    user = DynamicRelationField('UserSerializer')
    user_location_name = DynamicField(source='user.location.name',
                                      read_only=True)