diff --git a/access/new_view.py b/access/new_view.py index 8dd0b67..80c05aa 100644 --- a/access/new_view.py +++ b/access/new_view.py @@ -5,6 +5,7 @@ from rest_framework.renderers import JSONRenderer from rest_framework.response import Response from access.serializers import UserInitSerializer +from courses.models import Course class TeacherListView(APIView): @@ -12,11 +13,18 @@ class TeacherListView(APIView): status_code = 200 def get(self, request): - return Response([teacher.full_name() for teacher in get_user_model().objects.filter( + kwargs = dict( in_role='T', is_active=True, reg_status=4, - )], self.status_code) + ) + res = [] + course_id = request.GET.get('course_id', 0) + if course_id: + kwargs['course_teachers'] = Course.objects.get(id=course_id) + for teacher in get_user_model().objects.filter(**kwargs): + res.append(teacher.full_name()) + return Response(res, self.status_code) class CheckUserView(APIView): @@ -29,20 +37,64 @@ class CheckUserView(APIView): return Response(False, status=self.status_code) -class LoginView(APIView): +class InfoUserView(APIView): renderer_classes = (JSONRenderer,) status_code = 200 def get(self, request): + if request.user.is_authenticated(): + return Response(UserInitSerializer(request.user).data, status=self.status_code) + return Response('anonymous', status=self.status_code) + + +class RegistrationView(APIView): + renderer_classes = (JSONRenderer,) + + @staticmethod + def post(request): + try: + user = get_user_model().objects.get(email=request.JSON['email'].lower()) + except get_user_model().DoesNotExist: + user = get_user_model().objects.create_user( + email=request.JSON['email'].lower(), + ) + user.set_password(request.JSON['password']) + user.reg_status = '2' + user.save() + return Response(UserInitSerializer(user).data, status=200) + + +class ChangePasswordView(APIView): + renderer_classes = (JSONRenderer,) + + @staticmethod + def post(request): + if request.user.is_authenticated and not request.user.check_password(request.JSON['old_password']): + return Response("Неверный пароль", status=404) + request.user.set_password(request.JSON['new_password']) + request.user.save() + return Response("Пароль был изменён", status=200) + + +class LoginView(APIView): + renderer_classes = (JSONRenderer,) + + @staticmethod + def post(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) + try: + auth.login(request, user) + except AttributeError: + return Response("Неверный пароль", status=404) + return Response(UserInitSerializer(request.user).data, status=200) 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 + @staticmethod + def post(request): + if request.user.is_authenticated(): + auth.logout(request) + return Response(status=204) \ No newline at end of file