Coverage for website/thaliawebsite/api/v2/serializers/thumbnail.py: 77.27%
18 statements
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1from django.templatetags.static import static
3from rest_framework.fields import FileField
5from thaliawebsite.api.services import create_image_thumbnail_dict
8class ThumbnailSerializer(FileField):
9 options = {}
11 def __init__(
12 self,
13 instance=None,
14 data=None,
15 placeholder=None,
16 size_small="small",
17 size_medium="medium",
18 size_large="large",
19 **kwargs,
20 ):
21 super().__init__(**kwargs)
23 self.placeholder = placeholder
24 self.options = {
25 "size_small": size_small,
26 "size_medium": size_medium,
27 "size_large": size_large,
28 }
30 def to_representation(self, value):
31 placeholder = self.placeholder
32 if not value and placeholder:
33 placeholder = self.context["request"].build_absolute_uri(
34 static(self.placeholder)
35 )
37 return create_image_thumbnail_dict(value, placeholder, **self.options)
39 def to_internal_value(self, data):
40 if data == "":
41 return None
42 return super().to_internal_value(data)