You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.9 KiB
77 lines
2.9 KiB
# coding=utf-8
|
|
from celery.task import periodic_task
|
|
from datetime import timedelta, datetime
|
|
from django.core.files import File
|
|
from access.models import User
|
|
from journals.models import ExamTry, HomeworkTry, DiplomaJ
|
|
from management.letters import sent_new_expired
|
|
from lms.settings import TEACHER
|
|
|
|
|
|
@periodic_task(run_every=timedelta(hours=1))
|
|
def check_expired():
|
|
# Проверка просроченых задач преподавателя
|
|
for res in (ExamTry.objects.filter(f_date=None).exclude(expired=True),
|
|
HomeworkTry.objects.filter(f_date=None).exclude(expired=True)):
|
|
for _try in res:
|
|
if _try.parent.get_status_flag() not in ['N', 'F']:
|
|
# Проверка экзамена
|
|
if _try.date + timedelta(days=1) < datetime.now():
|
|
_try.expired = True
|
|
_try.save()
|
|
for user in User.objects.filter(in_role='S2'):
|
|
sent_new_expired(_try, user.email)
|
|
|
|
|
|
@periodic_task(run_every=timedelta(minutes=1))
|
|
def check_robo_prep():
|
|
teacher = User.objects.get(email=TEACHER)
|
|
handler = []
|
|
for journal in HomeworkTry.objects.filter(teacher=teacher, f_date=None).exclude(success=True, date=None).order_by(
|
|
'date'):
|
|
if journal.parent.get_status_flag not in ['N', 'F']:
|
|
handler.append(journal)
|
|
|
|
for journal in ExamTry.objects.filter(teacher=teacher, f_date=None).exclude(success=True, date=None).order_by(
|
|
'date'):
|
|
if journal.parent.get_status_flag not in ['N', 'F']:
|
|
handler.append(journal)
|
|
|
|
print(handler)
|
|
for _tr in handler:
|
|
for _cm in _tr.comments.all():
|
|
s = False
|
|
print(_cm.text)
|
|
if 'GO_TO_SUCCESS' in _cm.text:
|
|
_tr.success = True
|
|
_tr.f_date = datetime.now()
|
|
s = True
|
|
elif 'GO_TO_FAIL' in _cm.text:
|
|
_tr.f_date = datetime.now()
|
|
s = True
|
|
if s:
|
|
_tr.save()
|
|
|
|
|
|
#@periodic_task(run_every=timedelta(minutes=3))
|
|
#def block_warning():
|
|
# for tm in CourseThemeJ.objects.filter(material__empty=True):
|
|
# for n in CourseThemeJ.objects.filter(material__sort__gte=tm.material.sort-1, f_date=None).exclude(date=None):
|
|
# for u in User.objects.filter(in_role='A'):
|
|
# letters.block_warning(n, n.material.course.get_title(), u)
|
|
|
|
|
|
@periodic_task(run_every=timedelta(minutes=3))
|
|
def gen_in_diploma():
|
|
for tm in DiplomaJ.objects.filter(gen=False):
|
|
if not tm.out_image or not tm.in_image:
|
|
_in, _out = tm.draw_key(*tm.draw_name(*tm.draw_date()))
|
|
if _in:
|
|
_in = open(_in, 'rb')
|
|
tm.in_image.save(File(_in).name, File(_in), save=True)
|
|
|
|
if _out:
|
|
_out = open(_out, 'rb')
|
|
tm.out_image.save(File(_out).name, File(_out), save=True)
|
|
tm.gen = True
|
|
tm.save()
|
|
|