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)