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