|
|
|
|
@ -3,7 +3,7 @@ import datetime |
|
|
|
|
|
|
|
|
|
from django.contrib.auth import get_user_model |
|
|
|
|
from django.core.exceptions import ValidationError |
|
|
|
|
from django.http import HttpResponse |
|
|
|
|
from django.http import HttpResponse, HttpResponseForbidden |
|
|
|
|
from rest_framework.permissions import IsAuthenticated |
|
|
|
|
from rest_framework.renderers import JSONRenderer |
|
|
|
|
from rest_framework.response import Response |
|
|
|
|
@ -13,7 +13,7 @@ from django.db.models import Q |
|
|
|
|
from courses.models import Course |
|
|
|
|
from progress.models import ProgressLesson, Progress |
|
|
|
|
from progress.serializers import ProgressAnalyticSerializer, ProgressLessonSerializer, ProgressSerializer |
|
|
|
|
from courses.api import CourseProgressApi |
|
|
|
|
from courses.api import CourseProgressApi, CourseParamsApi |
|
|
|
|
from progress.tasks import add_next_lesson |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -349,3 +349,43 @@ class SetProgress(APIView): |
|
|
|
|
|
|
|
|
|
else: |
|
|
|
|
return Response("Эта функция доступна только сотрудникам персонала", status=403) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_teachers_pay(request): |
|
|
|
|
if not request.user.is_authenticated and (request.user.groups.filter(name="support") or request.user.is_superuser): |
|
|
|
|
return HttpResponseForbidden() |
|
|
|
|
|
|
|
|
|
date_from = request.GET.get('from', None) |
|
|
|
|
date_to = request.GET.get('to', None) |
|
|
|
|
email = request.GET.get('email', None) |
|
|
|
|
|
|
|
|
|
file_name = "teacher_pay_%s" % email |
|
|
|
|
file_name = file_name + "__from_%s" % date_from if date_from else file_name |
|
|
|
|
file_name = file_name + "__to_%s" % date_to if date_to else file_name |
|
|
|
|
|
|
|
|
|
progress_lessons = ProgressLesson.objects.filter( |
|
|
|
|
~Q(comment_tokens__len=0), |
|
|
|
|
checker__email=email, |
|
|
|
|
status='done', |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
progress_lessons = progress_lessons.filter(finish_date__lt=date_to) if date_to else progress_lessons |
|
|
|
|
progress_lessons = progress_lessons.filter(finish_date__gte=date_from) if date_from else progress_lessons |
|
|
|
|
|
|
|
|
|
response = HttpResponse(content_type='text/csv') |
|
|
|
|
response['Content-Disposition'] = 'attachment; filename="%s.csv"' % file_name |
|
|
|
|
|
|
|
|
|
writer = csv.writer(response) |
|
|
|
|
writer.writerow(['Почта студента', 'Имя студента', 'Курс', 'Дата', 'Время',]) |
|
|
|
|
|
|
|
|
|
for i in progress_lessons.order_by('-finish_date'): |
|
|
|
|
course_api = CourseParamsApi(i.progress.course_token) |
|
|
|
|
writer.writerow([ |
|
|
|
|
i.progress.user.email, |
|
|
|
|
i.progress.user.get_full_name(), |
|
|
|
|
course_api.get_slug_and_title()['title'], |
|
|
|
|
i.finish_date.date(), |
|
|
|
|
i.finish_date.time(), |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
return response |
|
|
|
|
|