svthalia/concrexit

View on GitHub
website/thaliawebsite/api/v2/serializers/thumbnail.py

Summary

Maintainability
A
50 mins
Test Coverage
from django.templatetags.static import static

from rest_framework.fields import FileField

from thaliawebsite.api.services import create_image_thumbnail_dict


class ThumbnailSerializer(FileField):
    options = {}

    def __init__(
        self,
        instance=None,
        data=None,
        placeholder=None,
        size_small="small",
        size_medium="medium",
        size_large="large",
        **kwargs
    ):
        super().__init__(**kwargs)

        self.placeholder = placeholder
        self.options = {
            "size_small": size_small,
            "size_medium": size_medium,
            "size_large": size_large,
        }

    def to_representation(self, value):
        placeholder = self.placeholder
        if not value and placeholder:
            placeholder = self.context["request"].build_absolute_uri(
                static(self.placeholder)
            )

        return create_image_thumbnail_dict(value, placeholder, **self.options)

    def to_internal_value(self, data):
        if data == "":
            return None
        return super().to_internal_value(data)