mirror of
https://github.com/wahyd4/links.git
synced 2026-08-08 21:04:53 +10:00
44 lines
1.5 KiB
Python
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()
|