LIL-421. Add Payments api

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent fdb91a39a3
commit 4cc56e9476
  1. 71
      api/v1/serializers/payment.py
  2. 3
      api/v1/urls.py
  3. 18
      api/v1/views.py

@ -1,7 +1,22 @@
from rest_framework import serializers
from apps.payment.models import AuthorBalance
from apps.payment.models import (
AuthorBalance, Payment,
CoursePayment, SchoolPayment,
)
from .user import UserSerializer
from .course import CourseSerializer
BASE_PAYMENT_FIELDS = (
'id',
'user',
'amount',
'status',
'data',
'is_deliverable',
'created_at',
'update_at',
)
class AuthorBalanceCreateSerializer(serializers.ModelSerializer):
@ -54,3 +69,57 @@ class AuthorBalanceSerializer(serializers.ModelSerializer):
'type',
'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)
class CoursePaymentSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = CoursePayment
fields = BASE_PAYMENT_FIELDS + ('course',)
read_only_fields = (
'id',
'user',
'course',
'created_at',
'update_at',
)
class SchoolPaymentSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = SchoolPayment
fields = BASE_PAYMENT_FIELDS + (
'weekdays',
'date_start',
'date_end',
)
read_only_fields = (
'id',
'user',
'course',
'created_at',
'update_at',
)

@ -17,6 +17,7 @@ from .views import (
GalleryViewSet, GalleryImageViewSet,
UserViewSet, LessonViewSet, ImageObjectViewSet,
SchoolScheduleViewSet, LiveLessonViewSet,
PaymentViewSet,
)
router = DefaultRouter()
@ -30,7 +31,7 @@ router.register(r'materials', MaterialViewSet, base_name='materials')
router.register(r'lessons', LessonViewSet, base_name='lessons')
router.register(r'likes', LikeViewSet, base_name='likes')
router.register(r'live-lesson', LiveLessonViewSet, base_name='live-lesson')
router.register(r'payments', PaymentViewSet, base_name='payments')
router.register(r'image-objects', ImageObjectViewSet, base_name='image-objects')
router.register(r'images', ImageViewSet, base_name='images')
router.register(r'texts', TextViewSet, base_name='texts')

@ -30,7 +30,11 @@ from .serializers.school import (
LiveLessonCreateSerializer,
LiveLessonSerializer,
)
from .serializers.payment import AuthorBalanceSerializer, AuthorBalanceCreateSerializer
from .serializers.payment import (
AuthorBalanceSerializer, AuthorBalanceCreateSerializer,
PaymentSerializer, CoursePaymentSerializer,
SchoolPaymentSerializer,
)
from .serializers.user import (
AuthorRequestSerializer,
UserSerializer, UserPhotoSerializer,
@ -53,7 +57,10 @@ from apps.content.models import (
Baner, Image, Text, ImageText, Video,
Gallery, GalleryImage, ImageObject,
)
from apps.payment.models import AuthorBalance
from apps.payment.models import (
AuthorBalance, Payment,
CoursePayment, SchoolPayment,
)
from apps.school.models import SchoolSchedule, LiveLesson
from apps.user.models import AuthorRequest
@ -409,3 +416,10 @@ class AuthorRequestViewSet(ExtendedModelViewSet):
serializer_class = AuthorRequestSerializer
permission_classes = (IsAdmin,)
filter_fields = ('status',)
class PaymentViewSet(ExtendedModelViewSet):
queryset = Payment.objects.all()
serializer_class = PaymentSerializer
permission_classes = (IsAdmin,)
filter_fields = ('status',)

Loading…
Cancel
Save