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

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