from utils import get_thumbs from django.db.models import Avg, Q from rest_framework import serializers from apps.library.models import * class CategorySerializer(serializers.ModelSerializer): books_count = serializers.IntegerField(read_only=True) class Meta: model = Category fields = ('id', 'title', 'slug', 'status', 'books_count', 'created_at', 'updated_at') class PinnedBookCollectionSerializer(serializers.ModelSerializer): covers = serializers.SerializerMethodField() def get_covers(self, obj: BookCollection): books = obj.books.all().order_by('-view_count')[:3] images = [] for book in books: if book.thumbnail: url = get_thumbs(book.thumbnail, self.context.get('request')) if url.get('md'): images.append(url['md']) return images class Meta: model = BookCollection fields = ('id', 'title', 'covers') class BookSerializer(serializers.ModelSerializer): thumbnail = serializers.SerializerMethodField() def get_thumbnail(self, obj): if obj.thumbnail: return get_thumbs(obj.thumbnail, self.context.get('request')) return None class Meta: model = Book fields = ( 'id', 'title', 'slug', 'summary', 'description', 'thumbnail', 'author', 'status', 'pin', 'view_count', 'download_count', 'file_type', 'book_file', 'created_at' )