LIL-657 Функция редактирования подписки в админке

remotes/origin/hotfix/LIL-661
gzbender 7 years ago
parent 7fdf31c22d
commit 7b8f42e6d6
  1. 54
      api/v1/serializers/payment.py
  2. 20
      api/v1/views.py

@ -71,6 +71,26 @@ class AuthorBalanceSerializer(serializers.ModelSerializer):
)
class PaymentCreateSerializer(serializers.ModelSerializer):
class Meta:
model = Payment
# fields = (
# 'weekdays',
# 'date_start',
# 'date_end',
# )
fields = '__all__'
read_only_fields = (
'id',
'user',
'created_at',
'update_at',
)
class PaymentSerializer(serializers.ModelSerializer):
user = UserSerializer()
@ -91,13 +111,33 @@ class PaymentSerializer(serializers.ModelSerializer):
return SchoolPaymentSerializer(instance, context=self.context).to_representation(instance)
class CoursePaymentSerializer(serializers.ModelSerializer):
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(CoursePaymentCreateSerializer):
user = UserSerializer()
course = CourseSerializer()
class SchoolPaymentCreateSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = CoursePayment
fields = BASE_PAYMENT_FIELDS + ('course',)
model = SchoolPayment
fields = BASE_PAYMENT_FIELDS + (
'weekdays',
'date_start',
'date_end',
)
read_only_fields = (
'id',
'user',
@ -106,8 +146,14 @@ class CoursePaymentSerializer(serializers.ModelSerializer):
'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 SchoolPaymentSerializer(serializers.ModelSerializer):
class SchoolPaymentSerializer(SchoolPaymentCreateSerializer):
user = UserSerializer()
class Meta:

@ -34,7 +34,7 @@ from .serializers.payment import (
AuthorBalanceSerializer, AuthorBalanceCreateSerializer,
PaymentSerializer, CoursePaymentSerializer,
SchoolPaymentSerializer,
)
PaymentCreateSerializer, CoursePaymentCreateSerializer, SchoolPaymentCreateSerializer)
from .serializers.user import (
AuthorRequestSerializer,
UserSerializer, UserPhotoSerializer,
@ -455,7 +455,11 @@ class AuthorRequestViewSet(ExtendedModelViewSet):
class PaymentViewSet(ExtendedModelViewSet):
queryset = Payment.objects.all()
serializer_class = PaymentSerializer
serializer_class = PaymentCreateSerializer
serializer_class_map = {
'list': PaymentSerializer,
'retrieve': PaymentSerializer,
}
permission_classes = (IsAdmin,)
filter_fields = ('status', 'user',)
ordering_fields = (
@ -465,6 +469,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 self.action == 'partial_update':
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(*args, **kwargs)
def get_queryset(self):
queryset = self.queryset
course = self.request.query_params.get('course')

Loading…
Cancel
Save