You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.6 KiB
46 lines
1.6 KiB
import datetime
|
|
|
|
from django.shortcuts import render
|
|
|
|
# Create your views here.
|
|
from rest_framework.renderers import JSONRenderer
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
|
|
from .models import Progress, PivotProgressVertex
|
|
from .serializers import PivotProgressSerializer
|
|
|
|
|
|
class UpdateProgress(APIView):
|
|
renderer_classes = (JSONRenderer,)
|
|
|
|
@staticmethod
|
|
def post(request):
|
|
"""
|
|
На вход обязательно передаётся параметр id (id узла).
|
|
"""
|
|
token = request.JSON.get('token', None)
|
|
course = request.JSON.get('slug', None)
|
|
if token is None or course is None:
|
|
return Response('Не передан слаг курса или токен урока', status=400)
|
|
try:
|
|
p = Progress.objects.get(user=request.user, course=course)
|
|
try:
|
|
pv = PivotProgressVertex.objects.get(
|
|
progress=p,
|
|
vertex=token,
|
|
)
|
|
|
|
except PivotProgressVertex.DoesNotExist:
|
|
pv = PivotProgressVertex.objects.create(
|
|
date=datetime.datetime.now(),
|
|
teacher=p.teacher,
|
|
progress=p,
|
|
vertex=token,
|
|
)
|
|
pv.status = 2
|
|
pv.save()
|
|
return Response(PivotProgressSerializer(pv).data, status=200)
|
|
|
|
except Progress.DoesNotExist:
|
|
return Response('Не найден прогресс по заданным параметрам', status=404) |