Добавленно пользовательское api

remotes/origin/pm_task_31703
Andrey 8 years ago
parent 7e90f2c1d8
commit 88bae0e8dc
  1. 22
      access/new_view.py
  2. 15
      courses/new_view.py
  3. 23
      courses/serializers.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)

@ -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)
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)

@ -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):

Loading…
Cancel
Save