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

remotes/origin/pm_task_31703
Andrey 9 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.auth import get_user_model
from django.contrib import auth
from rest_framework.views import APIView from rest_framework.views import APIView
from rest_framework.renderers import JSONRenderer from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response from rest_framework.response import Response
from access.serializers import UserInitSerializer
class TeacherListView(APIView): class TeacherListView(APIView):
renderer_classes = (JSONRenderer,) renderer_classes = (JSONRenderer,)
@ -23,4 +26,23 @@ class CheckUserView(APIView):
def get(self, request): def get(self, request):
if request.user.is_authenticated() and (request.user.in_role in ['M', 'S', 'S2', 'A'] or request.user.is_admin): 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(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) 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.models import Course, MaterialDirection, CourseTheme, Lesson
from courses.serializers import CourseTreeSerializer, CourseDetailSerializer, CourseListSerializer,\ from courses.serializers import CourseTreeSerializer, CourseDetailSerializer, CourseListSerializer,\
ThemeSerializer, LessonSerializer ThemeSerializer, LessonSerializer
from finance.models import Bill
class DirectionListView(APIView): class DirectionListView(APIView):
@ -56,4 +57,16 @@ class CourseListView(APIView):
status_code = 200 status_code = 200
def get(self, request): 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): class CourseListSerializer(serializers.ModelSerializer):
length = serializers.SerializerMethodField()
level = serializers.SerializerMethodField()
direction = serializers.SerializerMethodField()
class Meta: class Meta:
model = Course 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): class CourseTreeSerializer(serializers.ModelSerializer):

Loading…
Cancel
Save