# coding=utf-8 from datetime import timedelta, datetime from celery.task import periodic_task from django.core.files import File from management.letters import sent_new_expired from access.models import User from journals.models import ExamTry, HomeworkTry, DiplomaJ from settings.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()