Files
links/links/serializers.py
T
2024-11-17 11:11:08 +11:00

44 lines
1.5 KiB
Python

from rest_framework import serializers
from .models import Page, Newsletter, ImageCollection, Image
class PageSerializer(serializers.ModelSerializer):
class Meta:
model = Page
fields = ['id', 'url', 'title', 'summary', 'content', 'screenshot_path',
'process_status', 'created_at', 'updated_at']
read_only_fields = ['id', 'screenshot_path', 'process_status',
'created_at', 'updated_at']
class NewsletterSerializer(serializers.ModelSerializer):
class Meta:
model = Newsletter
fields = ['id', 'title', 'type', 'content', 'created_at', 'updated_at']
read_only_fields = ['id', 'created_at', 'updated_at']
extra_kwargs = {
'title': {'required': True},
'type': {'required': True},
'content': {'required': True}
}
class ImageSerializer(serializers.ModelSerializer):
url = serializers.SerializerMethodField()
class Meta:
model = Image
fields = ['id', 'title', 'description', 'url', 'content_type', 'size', 'created_at']
def get_url(self, obj):
from .storage import R2Storage
storage = R2Storage()
return storage.get_url(obj.file_key)
class ImageCollectionSerializer(serializers.ModelSerializer):
image_count = serializers.SerializerMethodField()
class Meta:
model = ImageCollection
fields = ['id', 'name', 'description', 'image_count', 'created_at']
def get_image_count(self, obj):
return obj.images.count()