Coverage for website/payments/api/v2/admin/serializers/payment.py: 80.00%
23 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 HiddenField
3from payments.api.v2.serializers.payment_user import PaymentUserSerializer
4from payments.models import Payment, PaymentUser
5from thaliawebsite.api.v2.fields import CurrentMemberDefault
6from thaliawebsite.api.v2.serializers.cleaned_model_serializer import (
7 CleanedModelSerializer,
8)
11class MemberAsPaymentUserSerializer(PaymentUserSerializer):
12 """Serializer that renders a Member as if it is a PaymentUser."""
14 def to_representation(self, instance):
15 if isinstance(instance, PaymentUser):
16 return super().to_representation(instance)
17 return super().to_representation(PaymentUser.objects.get(id=instance.id))
20class PaymentCreateSerializer(CleanedModelSerializer):
21 class Meta:
22 model = Payment
23 fields = (
24 "pk",
25 "type",
26 "paid_by",
27 "processed_by",
28 "amount",
29 "created_at",
30 "topic",
31 "notes",
32 )
33 read_only_fields = ("created_at",)
35 processed_by = HiddenField(default=CurrentMemberDefault())
38class PaymentAdminSerializer(CleanedModelSerializer):
39 class Meta:
40 model = Payment
41 fields = (
42 "pk",
43 "type",
44 "paid_by",
45 "processed_by",
46 "amount",
47 "created_at",
48 "topic",
49 "notes",
50 )
51 read_only_fields = (
52 "pk",
53 "type",
54 "paid_by",
55 "processed_by",
56 "amount",
57 "created_at",
58 "topic",
59 "notes",
60 )
62 paid_by = MemberAsPaymentUserSerializer(read_only=False)
63 processed_by = MemberAsPaymentUserSerializer(read_only=False)