Merge branch 'dev' into 'master'

Dev

See merge request !103
master
Andrey 8 years ago
commit ec8d7ae971
  1. 1
      progress/urls.py
  2. 44
      progress/views.py

@ -7,4 +7,5 @@ urlpatterns = [
url(r'student/$', views.StudentUpdateProgress.as_view()),
url(r'teacher/$', views.TeacherUpdateProgress.as_view()),
url(r'set-progress/$', views.SetProgress.as_view()),
url(r'get_hw_pay/$', views.get_teachers_pay),
]

@ -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

Loading…
Cancel
Save