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

1from rest_framework import serializers 

2 

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 

13 

14 

15class EventAdminSerializer(CleanedModelSerializer): 

16 """Serializer for events.""" 

17 

18 class Meta: 

19 model = Event 

20 fields = "__all__" 

21 

22 description = CleanedHTMLSerializer() 

23 price = PaymentAmountSerializer() 

24 fine = PaymentAmountSerializer() 

25 mark_present_url = serializers.ReadOnlyField() 

26 

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) 

35 

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) 

40 

41 

42class EventListAdminSerializer(serializers.ModelSerializer): 

43 """Serializer for events.""" 

44 

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 ) 

69 

70 description = CleanedHTMLSerializer() 

71 organisers = MemberGroupSerializer(many=True) 

72 price = PaymentAmountSerializer() 

73 fine = PaymentAmountSerializer()