diff --git a/access/new_view.py b/access/new_view.py index 2ae8524..8dd0b67 100644 --- a/access/new_view.py +++ b/access/new_view.py @@ -1,8 +1,11 @@ from django.contrib.auth import get_user_model +from django.contrib import auth from rest_framework.views import APIView from rest_framework.renderers import JSONRenderer from rest_framework.response import Response +from access.serializers import UserInitSerializer + class TeacherListView(APIView): renderer_classes = (JSONRenderer,) @@ -23,4 +26,23 @@ class CheckUserView(APIView): def get(self, request): if request.user.is_authenticated() and (request.user.in_role in ['M', 'S', 'S2', 'A'] or request.user.is_admin): return Response(True, status=self.status_code) + return Response(False, status=self.status_code) + + +class LoginView(APIView): + renderer_classes = (JSONRenderer,) + status_code = 200 + + def get(self, request): + if not request.user.is_authenticated(): + user = auth.authenticate(email=request.JSON.get('email'), password=request.JSON.get('password')) + return Response(UserInitSerializer(user).data, status=self.status_code) + return Response(status=403) + + +class LogoutView(APIView): + renderer_classes = (JSONRenderer,) + status_code = 204 + + def get(self, request): return Response(False, status=self.status_code) \ No newline at end of file diff --git a/courses/new_view.py b/courses/new_view.py index eaa4139..ba42044 100644 --- a/courses/new_view.py +++ b/courses/new_view.py @@ -4,6 +4,7 @@ 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): @@ -56,4 +57,16 @@ class CourseListView(APIView): status_code = 200 def get(self, request): - return Response([CourseListSerializer(i).data for i in Course.objects.all()], self.status_code) \ No newline at end of file + 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 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) \ No newline at end of file diff --git a/courses/serializers.py b/courses/serializers.py index c05f2ee..96f467d 100644 --- a/courses/serializers.py +++ b/courses/serializers.py @@ -29,10 +29,31 @@ class ThemeSerializer(serializers.ModelSerializer): class CourseListSerializer(serializers.ModelSerializer): + length = serializers.SerializerMethodField() + level = serializers.SerializerMethodField() + direction = serializers.SerializerMethodField() class Meta: model = Course - fields = ['id', 'title'] + fields = ['id', 'title', 'length', + 'level', 'direction', 'image',] + + @staticmethod + def get_length(self): + summary = 0 + for theme_slim in json.loads(self.normalmap.json_tree): + for simple_object in theme_slim['body']: + if simple_object.split('_')[1] == 'L': + summary += 1 + return summary + + @staticmethod + def get_level(self): + return self.get_level_display() + + @staticmethod + def get_direction(self): + return self.direction.title class CourseTreeSerializer(serializers.ModelSerializer):