You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.4 KiB
72 lines
2.4 KiB
from rest_framework.views import APIView
|
|
from rest_framework.renderers import JSONRenderer
|
|
from rest_framework.response import Response
|
|
from courses.models import Course, MaterialDirection, CourseTheme, Lesson
|
|
from courses.serializers import CourseTreeSerializer, CourseDetailSerializer, CourseListSerializer,\
|
|
ThemeSerializer, LessonSerializer
|
|
from finance.models import Bill
|
|
|
|
|
|
class DirectionListView(APIView):
|
|
renderer_classes = (JSONRenderer,)
|
|
status_code = 200
|
|
|
|
def get(self, request):
|
|
return Response([direction.title for direction in MaterialDirection.objects.all()], self.status_code)
|
|
|
|
|
|
class TreeView(APIView):
|
|
renderer_classes = (JSONRenderer,)
|
|
status_code = 200
|
|
|
|
@staticmethod
|
|
def post(request):
|
|
print(request)
|
|
return Response(status=204)
|
|
|
|
def get(self, request, id):
|
|
return Response(CourseTreeSerializer(Course.objects.get(id=id)).data, self.status_code)
|
|
|
|
|
|
class ThemeDetailView(APIView):
|
|
renderer_classes = (JSONRenderer,)
|
|
status_code = 200
|
|
|
|
def get(self, request, id):
|
|
return Response(ThemeSerializer(CourseTheme.objects.get(id=id)).data, self.status_code)
|
|
|
|
|
|
class LessonDetailView(APIView):
|
|
renderer_classes = (JSONRenderer,)
|
|
status_code = 200
|
|
|
|
def get(self, request, id):
|
|
return Response(LessonSerializer(Lesson.objects.get(id=id)).data, self.status_code)
|
|
|
|
|
|
class CourseDetailView(APIView):
|
|
renderer_classes = (JSONRenderer,)
|
|
status_code = 200
|
|
|
|
def get(self, request, id):
|
|
return Response(CourseDetailSerializer(Course.objects.get(id=id)).data, self.status_code)
|
|
|
|
|
|
class CourseListView(APIView):
|
|
renderer_classes = (JSONRenderer,)
|
|
status_code = 200
|
|
|
|
def get(self, request):
|
|
if not request.GET.get('staff', 'true') == 'false':
|
|
return Response([CourseListSerializer(i).data for i in Course.objects.all()], self.status_code)
|
|
|
|
res = []
|
|
for course in Course.objects.all():
|
|
if course.public:
|
|
course_serialize = CourseListSerializer(course).data
|
|
course_serialize['is_mine'] = False
|
|
if request.user.is_authenticated() and Bill.objects.filter(service__course=course, user=request.user, status='F').exists():
|
|
course_serialize['is_mine'] = True
|
|
res.append(course_serialize)
|
|
|
|
return Response(res, self.status_code) |