X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/3ca90d4aed87ed8b39c4984a290de6a3b898a7bd..18ecb6c6e58f9b273636f80f485e749a97ebdf60:/wtem/management/commands/notify_teachers.py diff --git a/wtem/management/commands/notify_teachers.py b/wtem/management/commands/notify_teachers.py index 354ab43..e7d3db0 100644 --- a/wtem/management/commands/notify_teachers.py +++ b/wtem/management/commands/notify_teachers.py @@ -9,6 +9,11 @@ from wtem.management.commands import send_mail from wtem.models import Confirmation +THRESHOLD = 0 + +AFTER_DEADLINE = True + + class Command(BaseCommand): def handle(self, *args, **options): sent = 0 @@ -16,19 +21,25 @@ class Command(BaseCommand): query = Contact.objects.filter(form_tag='olimpiada').order_by('contact').distinct('contact') template_name = 'notify_unconfirmed' - message_template = 'wtem/' + template_name + '.txt' + message_template = 'wtem/' + template_name + ('_after' if AFTER_DEADLINE else '') + '.txt' subject = render_to_string('wtem/' + template_name + '_subject.txt') - threshold = timezone.now() - timedelta(4) + threshold = timezone.now() - timedelta(THRESHOLD) for contact in query: unconfirmed = [] - for similar_contact in Contact.objects.filter(contact=contact.contact): - unconfirmed += list(Confirmation.objects.filter( - contact=similar_contact, confirmed=False, contact__created_at__lt=threshold)) + contacts = [] + for similar_contact in Contact.objects.filter(contact=contact.contact, form_tag=contact.form_tag): + contact_emails = [s['email'] for s in similar_contact.body.get('student', [])] + new_unconfirmed = list(Confirmation.objects.filter( + contact=similar_contact, confirmed=False, contact__created_at__lt=threshold, + email__in=contact_emails)) + unconfirmed += new_unconfirmed + if new_unconfirmed: + contacts.append(similar_contact) if not unconfirmed: continue - message = render_to_string(message_template, {'unconfirmed': unconfirmed}) + message = render_to_string(message_template, {'unconfirmed': unconfirmed, 'contacts': contacts}) try: self.send_message(message, subject, contact.contact) except Exception as e: