Coverage for website/photos/api/v2/serializers/album.py: 94.44%

18 statements  

« prev     ^ index     » next       coverage.py v7.6.7, created at 2025-08-14 10:31 +0000

1from rest_framework import serializers 

2 

3from photos import services 

4from photos.api.v2.serializers.photo import PhotoListSerializer, PhotoSerializer 

5from photos.models import Album 

6from thaliawebsite.api.v2.serializers.cleaned_model_serializer import ( 

7 CleanedModelSerializer, 

8) 

9 

10 

11class AlbumSerializer(CleanedModelSerializer): 

12 """API serializer for albums.""" 

13 

14 class Meta: 

15 """Meta class for the serializer.""" 

16 

17 model = Album 

18 fields = ( 

19 "slug", 

20 "title", 

21 "accessible", 

22 "shareable", 

23 "cover", 

24 "photos", 

25 "event", 

26 ) 

27 

28 cover = PhotoSerializer() 

29 accessible = serializers.SerializerMethodField("_accessible") 

30 photos = PhotoListSerializer(source="photo_set", many=True) 

31 

32 def _accessible(self, obj): 

33 return services.is_album_accessible(self.context["request"], obj) 

34 

35 

36class AlbumListSerializer(AlbumSerializer): 

37 class Meta: 

38 """Meta class for the serializer.""" 

39 

40 model = Album 

41 fields = ("slug", "title", "accessible", "shareable", "cover", "event")