Merge branch 'dev' into 'master'

Dev

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

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

@ -21,9 +21,12 @@ register_signal(client)
app.conf.beat_schedule = {
'periodic_billing': {
# 'schedule': crontab(day_of_month='1', hour='1', minute='1'), # заглушка на время отладки
'schedule': crontab(minute='0', hour='*/3',),
'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 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):
lesson_list = CourseProgressApi.get_next(
@ -25,3 +35,43 @@ def add_next_lesson(progress):
)
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()

@ -203,7 +203,7 @@ class TeacherUpdateProgress(APIView):
res = {"current": ProgressLessonSerializer(pv).data}
if pv.status == ProgressLesson.STATUSES.done:
# TODO: Ассинхроннаязадача для celery
# TODO: Ассинхронная задача для celery
res['next'] = ProgressLessonSerializer(add_next_lesson(p)).data
return Response(res, status=200)

Loading…
Cancel
Save