X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/9d6c41a8d4518ba851c9de7426abe49de0660077..3ca90d4aed87ed8b39c4984a290de6a3b898a7bd:/wtem/management/commands/notify_teachers.py diff --git a/wtem/management/commands/notify_teachers.py b/wtem/management/commands/notify_teachers.py new file mode 100644 index 0000000..354ab43 --- /dev/null +++ b/wtem/management/commands/notify_teachers.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +from datetime import timedelta +from django.core.management.base import BaseCommand +from django.template.loader import render_to_string +from django.utils import timezone + +from contact.models import Contact +from wtem.management.commands import send_mail +from wtem.models import Confirmation + + +class Command(BaseCommand): + def handle(self, *args, **options): + sent = 0 + failed = 0 + + query = Contact.objects.filter(form_tag='olimpiada').order_by('contact').distinct('contact') + template_name = 'notify_unconfirmed' + message_template = 'wtem/' + template_name + '.txt' + subject = render_to_string('wtem/' + template_name + '_subject.txt') + + threshold = timezone.now() - timedelta(4) + + 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)) + if not unconfirmed: + continue + message = render_to_string(message_template, {'unconfirmed': unconfirmed}) + try: + self.send_message(message, subject, contact.contact) + except Exception as e: + failed += 1 + self.stdout.write('failed sending to: ' + contact.contact + ' - ' + str(e)) + else: + sent += 1 + self.stdout.write('message sent to: ' + contact.contact) + + self.stdout.write('sent: %s, failed: %s' % (sent, failed)) + + def send_message(self, message, subject, email): + self.stdout.write('>>> sending to %s' % email) + send_mail(subject=subject, body=message, to=[email])