From f0749a6b2590e932b725115009e3b06210e0a699 Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Fri, 2 Mar 2018 10:18:05 +0300 Subject: [PATCH 1/3] Filter AuthorBalance by author id --- api/v1/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/v1/views.py b/api/v1/views.py index 6958934c..bca328a2 100644 --- a/api/v1/views.py +++ b/api/v1/views.py @@ -45,7 +45,7 @@ class AuthorBalanceViewSet(ExtendedModelViewSet): queryset = AuthorBalance.objects.all() serializer_class = AuthorBalanceSerializer permission_classes = (IsAdmin,) - filter_fields = ('status', 'type') + filter_fields = ('author', 'status', 'type') search_fields = ( 'author__email', 'author__first_name', From 79bc43f8cd3db5315dbac9608f5247d7e8d03305 Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Fri, 2 Mar 2018 10:19:32 +0300 Subject: [PATCH 2/3] Set nullable cause field of AuthorBalance --- apps/payment/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/payment/models.py b/apps/payment/models.py index e25fb6ab..dc8426dd 100644 --- a/apps/payment/models.py +++ b/apps/payment/models.py @@ -34,7 +34,7 @@ class AuthorBalance(models.Model): commission = models.DecimalField('Комиссия', max_digits=8, decimal_places=2, default=0) status = models.PositiveSmallIntegerField('Статус', choices=STATUS_CHOICES, default=0) payment = models.OneToOneField('Payment', on_delete=models.CASCADE, null=True, blank=True, verbose_name='Платёж') - cause = models.TextField('Причина отказа', default='') + cause = models.TextField('Причина отказа', null=True, blank=True) class Meta: verbose_name = 'Баланс' From 8603a92e101b3042e0a4535319b44dc2b06856f1 Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Fri, 2 Mar 2018 10:24:08 +0300 Subject: [PATCH 3/3] Fix AuthorBalanceSerializer --- api/v1/serializers/payment.py | 28 ++++++++++++++++++++++++++++ api/v1/views.py | 7 +++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/api/v1/serializers/payment.py b/api/v1/serializers/payment.py index 93400cbf..9174177d 100644 --- a/api/v1/serializers/payment.py +++ b/api/v1/serializers/payment.py @@ -1,9 +1,37 @@ from rest_framework import serializers from apps.payment.models import AuthorBalance +from .user import UserSerializer + + +class AuthorBalanceCreateSerializer(serializers.ModelSerializer): + + class Meta: + model = AuthorBalance + fields = ( + 'id', + 'author', + 'type', + 'amount', + 'commission', + 'status', + 'payment', + 'cause', + ) + + read_only_fields = ( + 'id', + 'author', + 'type', + 'payment', + ) + + def to_representation(self, instance): + return AuthorBalanceSerializer(instance, context=self.context).to_representation(instance) class AuthorBalanceSerializer(serializers.ModelSerializer): + author = UserSerializer() class Meta: model = AuthorBalance diff --git a/api/v1/views.py b/api/v1/views.py index bca328a2..ad4b1402 100644 --- a/api/v1/views.py +++ b/api/v1/views.py @@ -24,7 +24,7 @@ from .serializers.content import ( ImageObjectSerializer, ) from .serializers.school import SchoolScheduleSerializer -from .serializers.payment import AuthorBalanceSerializer +from .serializers.payment import AuthorBalanceSerializer, AuthorBalanceCreateSerializer from .serializers.user import ( UserSerializer, UserPhotoSerializer, ) @@ -43,7 +43,10 @@ User = get_user_model() class AuthorBalanceViewSet(ExtendedModelViewSet): queryset = AuthorBalance.objects.all() - serializer_class = AuthorBalanceSerializer + serializer_class = AuthorBalanceCreateSerializer + serializer_class_map = { + 'list': AuthorBalanceSerializer, + } permission_classes = (IsAdmin,) filter_fields = ('author', 'status', 'type') search_fields = (