|
|
|
@ -1,6 +1,16 @@ |
|
|
|
from courses.api import CourseProgressApi |
|
|
|
from dateutil.relativedelta import relativedelta |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from courses.api import CourseProgressApi, CourseParamsApi |
|
|
|
from progress.models import ProgressLesson |
|
|
|
from progress.models import ProgressLesson |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from django.utils import timezone |
|
|
|
|
|
|
|
import os |
|
|
|
|
|
|
|
import csv |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from lms import celery_app |
|
|
|
|
|
|
|
from django.conf import settings |
|
|
|
|
|
|
|
from django.core.mail import EmailMessage |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def add_next_lesson(progress): |
|
|
|
def add_next_lesson(progress): |
|
|
|
lesson_list = CourseProgressApi.get_next( |
|
|
|
lesson_list = CourseProgressApi.get_next( |
|
|
|
@ -25,3 +35,43 @@ def add_next_lesson(progress): |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
return pl |
|
|
|
return pl |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@celery_app.task |
|
|
|
|
|
|
|
def statistic_teachers(): |
|
|
|
|
|
|
|
file_dir = "%s/analytics/teachers/" % (settings.MEDIA_ROOT,) |
|
|
|
|
|
|
|
os.makedirs(os.path.dirname(file_dir), exist_ok=True) |
|
|
|
|
|
|
|
path = '%s%s' % (file_dir, timezone.now().strftime('%Y-%m-%d__%H-%M')) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
progresses = ProgressLesson.objects.filter(status='wait') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
with open(path, 'w') as csv_file: |
|
|
|
|
|
|
|
csv_writer = csv.writer(csv_file) |
|
|
|
|
|
|
|
csv_writer.writerow( |
|
|
|
|
|
|
|
['Курс', 'Препод', 'Ранее', '6 Дней', '5 Дней', "4 Дня", "3 Дня", "2 Дня", "Вчера", "Сегодня"]) |
|
|
|
|
|
|
|
for i in progresses.values('progress__teacher__email', 'progress__course_token').distinct(): |
|
|
|
|
|
|
|
row = [] |
|
|
|
|
|
|
|
course_token = i['progress__course_token'] |
|
|
|
|
|
|
|
teacher_email = i['progress__teacher__email'] |
|
|
|
|
|
|
|
progresses_sub = progresses.filter(progress__course_token=course_token, progress__teacher__email=teacher_email) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
row.append(CourseParamsApi(course_token).get_slug_and_title()['title']) |
|
|
|
|
|
|
|
row.append(teacher_email) |
|
|
|
|
|
|
|
row.append(progresses_sub.filter(last_update__lt=(timezone.now() - relativedelta(days=7))).count()) |
|
|
|
|
|
|
|
for j in range(7): |
|
|
|
|
|
|
|
from_d = timezone.now() - relativedelta(days=(7 - j)) |
|
|
|
|
|
|
|
to_d = timezone.now() - relativedelta(days=(6 - j)) |
|
|
|
|
|
|
|
row.append(progresses_sub.filter(last_update__gte=from_d, last_update__lt=to_d).count()) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
csv_writer.writerow(row) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
message = EmailMessage( |
|
|
|
|
|
|
|
'Выгрузка по преподам.', |
|
|
|
|
|
|
|
'Файл приложен', |
|
|
|
|
|
|
|
'robo@skillbox.ru', |
|
|
|
|
|
|
|
[settings.SUPPORT_EMAIL,], |
|
|
|
|
|
|
|
['andrey.korolev@skillbox.ru',], |
|
|
|
|
|
|
|
reply_to=['andrey.korolev@skillbox.ru'], |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
message.attach_file(path) |
|
|
|
|
|
|
|
message.send() |
|
|
|
|