Merge branch 'feature/LIL-657' into 'master'

Feature/lil 657

See merge request lilcity/backend!150
remotes/origin/hotfix/LIL-661
cfwme 7 years ago
commit 6366ded23e
  1. 53
      api/v1/serializers/payment.py
  2. 16
      api/v1/views.py

@ -68,7 +68,6 @@ class PaymentSerializer(serializers.ModelSerializer):
class AuthorBalanceSerializer(serializers.ModelSerializer):
author = UserSerializer()
# payment = PaymentSerializer()
payment = serializers.SerializerMethodField()
class Meta:
@ -111,6 +110,40 @@ class AuthorBalanceSerializer(serializers.ModelSerializer):
return data
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 CoursePaymentCreateSerializer(serializers.ModelSerializer):
class Meta:
model = CoursePayment
fields = BASE_PAYMENT_FIELDS + ('course',)
read_only_fields = (
'id',
'user',
'course',
'created_at',
'update_at',
)
class CoursePaymentSerializer(serializers.ModelSerializer):
user = UserSerializer()
course = CourseSerializer()
@ -127,6 +160,24 @@ class CoursePaymentSerializer(serializers.ModelSerializer):
)
class SchoolPaymentCreateSerializer(serializers.ModelSerializer):
class Meta:
model = SchoolPayment
fields = BASE_PAYMENT_FIELDS + (
'weekdays',
'date_start',
'date_end',
)
read_only_fields = (
'id',
'user',
'course',
'created_at',
'update_at',
)
class SchoolPaymentSerializer(serializers.ModelSerializer):
user = UserSerializer()

@ -34,7 +34,7 @@ from .serializers.payment import (
AuthorBalanceSerializer, AuthorBalanceCreateSerializer,
PaymentSerializer, CoursePaymentSerializer,
SchoolPaymentSerializer,
)
CoursePaymentCreateSerializer, SchoolPaymentCreateSerializer)
from .serializers.user import (
AuthorRequestSerializer,
UserSerializer, UserPhotoSerializer,
@ -453,7 +453,7 @@ class AuthorRequestViewSet(ExtendedModelViewSet):
filter_fields = ('status',)
class PaymentViewSet(ExtendedModelViewSet):
class PaymentViewSet(viewsets.ModelViewSet):
queryset = Payment.objects.all()
serializer_class = PaymentSerializer
permission_classes = (IsAdmin,)
@ -465,6 +465,18 @@ class PaymentViewSet(ExtendedModelViewSet):
)
search_fields = ('user__email', 'user__first_name', 'user__last_name',)
def get_serializer(self, instance, *args, **kwargs):
print('instance', type(instance), self.action)
serializer_class = self.get_serializer_class()
if 'update' in self.action:
if isinstance(instance, CoursePayment):
serializer_class = CoursePaymentCreateSerializer
elif isinstance(instance, SchoolPayment):
serializer_class = SchoolPaymentCreateSerializer
print('serializer_class', serializer_class)
kwargs['context'] = self.get_serializer_context()
return serializer_class(instance, *args, **kwargs)
def get_queryset(self):
queryset = self.queryset
course = self.request.query_params.get('course')

Loading…
Cancel
Save