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

1from rest_framework.fields import HiddenField 

2 

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) 

9 

10 

11class MemberAsPaymentUserSerializer(PaymentUserSerializer): 

12 """Serializer that renders a Member as if it is a PaymentUser.""" 

13 

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)) 

18 

19 

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",) 

34 

35 processed_by = HiddenField(default=CurrentMemberDefault()) 

36 

37 

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 ) 

61 

62 paid_by = MemberAsPaymentUserSerializer(read_only=False) 

63 processed_by = MemberAsPaymentUserSerializer(read_only=False)