fmartingr
/
shelfzilla
Archived
1
0
Fork 0
This repository has been archived on 2021-06-29. You can view files and clone it, but cannot push or open issues or pull requests.
shelfzilla/shelfzilla/apps/manga/api/serializers.py

60 lines
1.5 KiB
Python

# coding: utf-8
# django
from django.conf import settings
# third party
from easy_thumbnails.files import get_thumbnailer
from rest_framework import serializers
# own
from ..models import Volume, Series, Publisher, Person, Language
class LanguageSerializer(serializers.ModelSerializer):
class Meta:
model = Language
fields = ('name', )
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ('name',)
class PublisherSerializer(serializers.ModelSerializer):
class Meta:
model = Publisher
fields = ('id', 'name', 'url', )
class SeriesSerializer(serializers.ModelSerializer):
original_publisher = PublisherSerializer()
art = PersonSerializer(many=True)
story = PersonSerializer(many=True)
class Meta:
model = Series
fields = ('id', 'name', 'status', 'art', 'story', 'original_publisher')
class VolumeSerializer(serializers.ModelSerializer):
series = SeriesSerializer()
publisher = PublisherSerializer()
language = LanguageSerializer()
cover = serializers.SerializerMethodField('get_cover_thumbnail')
def get_cover_thumbnail(self, obj):
if obj.cover:
url = get_thumbnailer(obj.cover).get_thumbnail({
'size': (100, 100), 'crop': 'scale', 'autocrop': True,
}).url
return url
return None
class Meta:
model = Volume
fields = ('id', 'series', 'number', 'name', 'retail_price',
'release_date', 'publisher', 'cover', 'language')