Merge branch 'statistics_migrate' into 'dev'

stat part 1

See merge request !440
remotes/origin/autodeploy
Andrey 8 years ago
commit 1ab64c434c
  1. 1
      finance/tasks.py
  2. 5
      lms/celery.py
  3. 52
      progress/tasks.py

@ -1,4 +1,3 @@
import logging
import os import os
import requests import requests

@ -21,9 +21,12 @@ register_signal(client)
app.conf.beat_schedule = { app.conf.beat_schedule = {
'periodic_billing': { 'periodic_billing': {
# 'schedule': crontab(day_of_month='1', hour='1', minute='1'), # заглушка на время отладки
'schedule': crontab(minute='0', hour='*/3',), 'schedule': crontab(minute='0', hour='*/3',),
'task': 'finance.tasks.periodic_billing' 'task': 'finance.tasks.periodic_billing'
},
'statistic_teachers': {
'schedule': crontab(hour=16, minute=0,),
'task': 'progress.tasks.statistic_teachers'
} }
} }

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

Loading…
Cancel
Save