X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/338df01332addc2146023ae2ed3a6f2730fb0098..543746a467e90915f7eaf60b7b09f5fa498056e0:/wtem/management/commands/wtem_send_keys.py diff --git a/wtem/management/commands/wtem_send_keys.py b/wtem/management/commands/wtem_send_keys.py new file mode 100644 index 0000000..05ffcbb --- /dev/null +++ b/wtem/management/commands/wtem_send_keys.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- + +import sys +from optparse import make_option + +from django.core.management.base import BaseCommand, CommandError +from django.conf import settings +from wtem.management.commands import send_mail +from django.template.loader import render_to_string + +from wtem.models import Submission, DEBUG_KEY + + +class Command(BaseCommand): + help = 'Sends personalized links to WTEM contestants' + args = ', , ...' + + option_list = BaseCommand.option_list + ( + make_option('--all', + action='store_true', + dest='all', + default=False, + help='Use all available submissions'), + make_option('--force', + action='store_true', + dest='force', + default=False, + help='Force sending key even if one was already sent') + ) + + def handle(self, *args, **options): + if len(args) or options['all']: + return self.send_keys(*args, **options) + self.stdout.write('No submissions selected') + + def send_keys(self, *args, **options): + sent = 0 + skipped = 0 + failed = 0 + + query = Submission.objects.all() + if not options['force']: + query = query.filter(key_sent = False) + if len(args): + query = query.filter(email__in = args) + + for submission in query.all(): + assert len(submission.key) == 30 or (settings.DEBUG and submission.key == DEBUG_KEY) + + try: + self.send_key(submission) + except Exception as e: + failed += 1 + self.stdout.write('failed sending to: ' + submission.email + ' - ' + str(e)) + else: + submission.key_sent = True + submission.save() + sent += 1 + self.stdout.write('key sent to: ' + submission.email) + + self.stdout.write('sent: ' + str(sent)) + + def send_key(self, submission): + self.stdout.write('>>> sending to ' + submission.email) + send_mail( + subject = "WTEM - Twój link do zadań", + body = render_to_string('wtem/email_key.txt', dict(submission = submission)), + to = [submission.email] + ) \ No newline at end of file