|
|
|
|
@ -15,7 +15,7 @@ from rest_framework.permissions import IsAuthenticated |
|
|
|
|
from rest_framework.renderers import JSONRenderer |
|
|
|
|
from rest_framework.response import Response |
|
|
|
|
from rest_framework.views import APIView |
|
|
|
|
from django.db.models import Q |
|
|
|
|
from django.db.models import Q, Count |
|
|
|
|
import jwt |
|
|
|
|
from django.conf import settings |
|
|
|
|
|
|
|
|
|
@ -64,19 +64,31 @@ class CourseProgressDynamicView(APIView): |
|
|
|
|
renderer_classes = (JSONRenderer,) |
|
|
|
|
|
|
|
|
|
@staticmethod |
|
|
|
|
def get(request, token): |
|
|
|
|
def get(request): |
|
|
|
|
course_token = request.GET.get('course_token', None) |
|
|
|
|
from_date = int(request.GET.get('from', '7')) |
|
|
|
|
to_date = int(request.GET.get('to', '0')) |
|
|
|
|
|
|
|
|
|
if request.user.is_authenticated() and request.user.is_staff: |
|
|
|
|
progresses = ProgressLesson.objects.filter(status='done') |
|
|
|
|
if not course_token is None: |
|
|
|
|
try: |
|
|
|
|
progresses = Progress.objects.filter(course_token=token) |
|
|
|
|
progresses = progresses.filter(progress__course_token=course_token) |
|
|
|
|
except ProgressLesson.DoesNotExist: |
|
|
|
|
return Response('incorrect course token', status=404) |
|
|
|
|
|
|
|
|
|
progresses = progresses.filter(finish_date__gt=timezone.now() - relativedelta(days=from_date)) |
|
|
|
|
progresses = progresses.filter(finish_date__lt=timezone.now() - relativedelta(days=to_date)) |
|
|
|
|
progresses = progresses.order_by('finish_date') |
|
|
|
|
|
|
|
|
|
res = {} |
|
|
|
|
for i in progresses: |
|
|
|
|
key = i.progresslesson_set.filter(status="done").count() + 1 |
|
|
|
|
res[key] = 1 if not key in res.keys() else res[key] + 1 |
|
|
|
|
return Response(res, status=200) |
|
|
|
|
except ValidationError: |
|
|
|
|
return Response("Bad request", status=400) |
|
|
|
|
progresses = progresses.extra({'finish_date_day': "date(finish_date)"})\ |
|
|
|
|
.values('progress__course_token', 'finish_date_day')\ |
|
|
|
|
.annotate(total=Count('progress')) |
|
|
|
|
#TODO Доделать |
|
|
|
|
|
|
|
|
|
return Response(status=403) |
|
|
|
|
return Response(res, status=200) |
|
|
|
|
return Response('Доступно только персоналу', status=403) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CourseProgressUserView(APIView): |
|
|
|
|
|