Coverage for website/documents/api/v2/serializers/document.py: 66.67%

13 statements  

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

1from rest_framework.fields import SerializerMethodField 

2 

3from documents.models import Document 

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

5 CleanedModelSerializer, 

6) 

7from utils.media.services import get_media_url 

8 

9 

10class DocumentSerializer(CleanedModelSerializer): 

11 class Meta: 

12 model = Document 

13 fields = ("pk", "name", "url", "category", "members_only") 

14 

15 url = SerializerMethodField("_url") 

16 

17 def _url(self, instance): 

18 if instance.members_only and ( 

19 not self.context["request"].user.is_authenticated 

20 or not self.context["request"].member.has_active_membership() 

21 ): 

22 return self.context["request"].build_absolute_uri( 

23 instance.get_absolute_url() 

24 ) 

25 

26 return get_media_url(instance.file, absolute_url=True)