From 0e9d3af2fa7ef1116e6ad18d129104425452815b Mon Sep 17 00:00:00 2001 From: gzbender Date: Mon, 17 Sep 2018 19:12:04 +0500 Subject: [PATCH] =?UTF-8?q?LIL-664=20=D0=90=D0=B4=D0=BC=D0=B8=D0=BD=D0=BA?= =?UTF-8?q?=D0=B0=20/=20=D0=B1=D0=B0=D0=BB=D0=B0=D0=BD=D1=81=D1=8B=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B5=D0=BF=D0=BE=D0=B4=D0=B0=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/serializers/payment.py | 58 +++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/api/v1/serializers/payment.py b/api/v1/serializers/payment.py index 6268a63d..0d4aec8b 100644 --- a/api/v1/serializers/payment.py +++ b/api/v1/serializers/payment.py @@ -46,8 +46,30 @@ class AuthorBalanceCreateSerializer(serializers.ModelSerializer): return AuthorBalanceSerializer(instance, context=self.context).to_representation(instance) +class PaymentSerializer(serializers.ModelSerializer): + user = UserSerializer() + + class Meta: + model = Payment + fields = BASE_PAYMENT_FIELDS + read_only_fields = ( + 'id', + 'user', + 'created_at', + 'update_at', + ) + + def to_representation(self, instance): + if isinstance(instance, CoursePayment): + return CoursePaymentSerializer(instance, context=self.context).to_representation(instance) + elif isinstance(instance, SchoolPayment): + return SchoolPaymentSerializer(instance, context=self.context).to_representation(instance) + + class AuthorBalanceSerializer(serializers.ModelSerializer): author = UserSerializer() + # payment = PaymentSerializer() + payment = serializers.SerializerMethodField() class Meta: model = AuthorBalance @@ -70,25 +92,23 @@ class AuthorBalanceSerializer(serializers.ModelSerializer): 'payment', ) - -class PaymentSerializer(serializers.ModelSerializer): - user = UserSerializer() - - class Meta: - model = Payment - fields = BASE_PAYMENT_FIELDS - read_only_fields = ( - 'id', - 'user', - 'created_at', - 'update_at', - ) - - def to_representation(self, instance): - if isinstance(instance, CoursePayment): - return CoursePaymentSerializer(instance, context=self.context).to_representation(instance) - elif isinstance(instance, SchoolPayment): - return SchoolPaymentSerializer(instance, context=self.context).to_representation(instance) + def get_payment(self, instance): + try: + p = instance.payment + except Exception: + return None + data = { + 'id': p.id, + 'created_at': p.created_at, + 'amount': p.amount, + 'data': p.data, + } + if isinstance(instance.payment, CoursePayment): + data['course'] = { + 'id': p.course.id, + 'title': p.course.title, + } + return data class CoursePaymentSerializer(serializers.ModelSerializer):