Coverage for website/events/api/v2/admin/serializers/event_registration.py: 69.57%

23 statements  

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

1from rest_framework import serializers 

2 

3from events.models import EventRegistration 

4from members.api.v2.serializers.member import MemberSerializer 

5from members.models import Member 

6from payments.api.v2.serializers import PaymentSerializer 

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

8 CleanedModelSerializer, 

9) 

10 

11 

12class EventRegistrationAdminSerializer(CleanedModelSerializer): 

13 """Serializer for event registrations.""" 

14 

15 class Meta: 

16 model = EventRegistration 

17 fields = ( 

18 "pk", 

19 "present", 

20 "queue_position", 

21 "date", 

22 "date_cancelled", 

23 "payment", 

24 "member", 

25 "name", 

26 "special_price", 

27 "remarks", 

28 "phone_number", 

29 "email", 

30 ) 

31 read_only_fields = ("payment",) 

32 optional_fields = ["payment", "member", "name", "special_price", "remarks"] 

33 

34 payment = PaymentSerializer(required=False) 

35 

36 def create(self, validated_data): 

37 event = self.context["event"] 

38 validated_data.update({"event": event}) 

39 return super().create(validated_data) 

40 

41 def to_internal_value(self, data): 

42 self.fields["member"] = serializers.PrimaryKeyRelatedField( 

43 queryset=Member.objects.all(), required=False 

44 ) 

45 return super().to_internal_value(data) 

46 

47 def to_representation(self, instance): 

48 self.fields["member"] = MemberSerializer( 

49 admin=True, detailed=False, read_only=True 

50 ) 

51 return super().to_representation(instance)