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
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1from rest_framework.fields import SerializerMethodField
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
10class DocumentSerializer(CleanedModelSerializer):
11 class Meta:
12 model = Document
13 fields = ("pk", "name", "url", "category", "members_only")
15 url = SerializerMethodField("_url")
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 )
26 return get_media_url(instance.file, absolute_url=True)