|
|
|
@ -23,19 +23,25 @@ class StudentWorkView(APIView): |
|
|
|
@staticmethod |
|
|
|
@staticmethod |
|
|
|
def get(request, teacher_token): |
|
|
|
def get(request, teacher_token): |
|
|
|
client_status = request.GET.get('status', 'in_progress') |
|
|
|
client_status = request.GET.get('status', 'in_progress') |
|
|
|
last_id = request.GET.get('last_id', 0) |
|
|
|
|
|
|
|
server_status = Q(status='fail') if \ |
|
|
|
|
|
|
|
client_status == 'not_done' else Q(status='wait') if client_status == 'in_progress'\ |
|
|
|
|
|
|
|
else Q(status='done') |
|
|
|
|
|
|
|
if request.user.is_authenticated() and request.user.groups.filter(name__in=['teachers', 'admin']).exists(): |
|
|
|
if request.user.is_authenticated() and request.user.groups.filter(name__in=['teachers', 'admin']).exists(): |
|
|
|
try: |
|
|
|
try: |
|
|
|
progress_lessons = ProgressLesson.objects.filter( |
|
|
|
if client_status == 'done': |
|
|
|
~Q(progress__user__out_key=teacher_token), |
|
|
|
date_from = datetime.datetime.now() - datetime.timedelta(days=7) |
|
|
|
# ~Q(comment_tokens__len=0), |
|
|
|
progress_lessons = ProgressLesson.objects.filter( |
|
|
|
server_status, |
|
|
|
~Q(progress__user__out_key=teacher_token), |
|
|
|
checker__out_key=teacher_token, |
|
|
|
~Q(comment_tokens__len=0), |
|
|
|
id__gt=last_id, |
|
|
|
status='done', |
|
|
|
)[last_id:100] |
|
|
|
checker__out_key=teacher_token, |
|
|
|
|
|
|
|
finish_date__gte=date_from, |
|
|
|
|
|
|
|
).order_by('-finish_date') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
server_status = Q(status='fail') if client_status == 'not_done' else Q(status='wait') |
|
|
|
|
|
|
|
progress_lessons = ProgressLesson.objects.filter( |
|
|
|
|
|
|
|
~Q(progress__user__out_key=teacher_token), |
|
|
|
|
|
|
|
server_status, |
|
|
|
|
|
|
|
checker__out_key=teacher_token, |
|
|
|
|
|
|
|
).order_by('-last_update') |
|
|
|
return Response([ProgressLessonSerializer(i).data for i in progress_lessons], status=200) |
|
|
|
return Response([ProgressLessonSerializer(i).data for i in progress_lessons], status=200) |
|
|
|
except ValidationError: |
|
|
|
except ValidationError: |
|
|
|
return Response("Bad request", status=400) |
|
|
|
return Response("Bad request", status=400) |
|
|
|
|