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

1from django.templatetags.static import static 

2 

3from rest_framework.fields import FileField 

4 

5from thaliawebsite.api.services import create_image_thumbnail_dict 

6 

7 

8class ThumbnailSerializer(FileField): 

9 options = {} 

10 

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) 

22 

23 self.placeholder = placeholder 

24 self.options = { 

25 "size_small": size_small, 

26 "size_medium": size_medium, 

27 "size_large": size_large, 

28 } 

29 

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 ) 

36 

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

38 

39 def to_internal_value(self, data): 

40 if data == "": 

41 return None 

42 return super().to_internal_value(data)