You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.4 KiB
43 lines
1.4 KiB
from rest_framework import serializers
|
|
|
|
from .models import ArticleCategory, ArticleCollection
|
|
from .serializers_admin import AbsoluteImageField
|
|
|
|
|
|
class DovodiArticleCategorySerializer(serializers.ModelSerializer):
|
|
slug = serializers.CharField(required=False, allow_blank=True)
|
|
|
|
class Meta:
|
|
model = ArticleCategory
|
|
fields = ["id", "title", "slug", "status", "order"]
|
|
|
|
|
|
class DovodiArticleCollectionSerializer(serializers.ModelSerializer):
|
|
slug = serializers.CharField(required=False, allow_blank=True)
|
|
thumbnail = AbsoluteImageField(required=False, allow_null=True)
|
|
remove_thumbnail = serializers.BooleanField(write_only=True, required=False, default=False)
|
|
|
|
class Meta:
|
|
model = ArticleCollection
|
|
fields = [
|
|
"id",
|
|
"title",
|
|
"slug",
|
|
"summary",
|
|
"display_position",
|
|
"status",
|
|
"order",
|
|
"thumbnail",
|
|
"remove_thumbnail",
|
|
]
|
|
|
|
def create(self, validated_data):
|
|
validated_data.pop("remove_thumbnail", False)
|
|
return super().create(validated_data)
|
|
|
|
def update(self, instance, validated_data):
|
|
remove_thumbnail = validated_data.pop("remove_thumbnail", False)
|
|
if remove_thumbnail and instance.thumbnail:
|
|
instance.thumbnail.delete(save=False)
|
|
instance.thumbnail = None
|
|
return super().update(instance, validated_data)
|