Coverage for website/events/api/v2/admin/serializers/event.py: 81.82%
33 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 import serializers
3from activemembers.api.v2.serializers.member_group import MemberGroupSerializer
4from activemembers.models import MemberGroup
5from documents.api.v2.serializers.document import DocumentSerializer
6from documents.models import Document
7from events.models import Event
8from payments.api.v2.serializers.payment_amount import PaymentAmountSerializer
9from thaliawebsite.api.v2.serializers.cleaned_model_serializer import (
10 CleanedModelSerializer,
11)
12from thaliawebsite.api.v2.serializers.html import CleanedHTMLSerializer
15class EventAdminSerializer(CleanedModelSerializer):
16 """Serializer for events."""
18 class Meta:
19 model = Event
20 fields = "__all__"
22 description = CleanedHTMLSerializer()
23 price = PaymentAmountSerializer()
24 fine = PaymentAmountSerializer()
25 mark_present_url = serializers.ReadOnlyField()
27 def to_internal_value(self, data):
28 self.fields["organisers"] = serializers.PrimaryKeyRelatedField(
29 queryset=MemberGroup.active_objects.all()
30 )
31 self.fields["documents"] = serializers.PrimaryKeyRelatedField(
32 queryset=Document.objects.all(), many=True
33 )
34 return super().to_internal_value(data)
36 def to_representation(self, instance):
37 self.fields["organisers"] = MemberGroupSerializer(many=True, read_only=True)
38 self.fields["documents"] = DocumentSerializer(many=True, read_only=True)
39 return super().to_representation(instance)
42class EventListAdminSerializer(serializers.ModelSerializer):
43 """Serializer for events."""
45 class Meta:
46 model = Event
47 fields = (
48 "pk",
49 "title",
50 "description",
51 "caption",
52 "start",
53 "end",
54 "category",
55 "published",
56 "registration_start",
57 "registration_end",
58 "update_deadline",
59 "cancel_deadline",
60 "optional_registrations",
61 "location",
62 "price",
63 "fine",
64 "max_participants",
65 "has_fields",
66 "tpay_allowed",
67 "organisers",
68 )
70 description = CleanedHTMLSerializer()
71 organisers = MemberGroupSerializer(many=True)
72 price = PaymentAmountSerializer()
73 fine = PaymentAmountSerializer()