1 # -*- coding: utf-8 -*-
4 from optparse import make_option
6 from django.core.management.base import BaseCommand, CommandError
7 from django.conf import settings
8 from wtem.management.commands import send_mail
9 from django.template.loader import render_to_string
11 from wtem.models import Submission, DEBUG_KEY
14 class Command(BaseCommand):
15 help = 'Sends personalized links to WTEM contestants'
16 args = '<email_address1>, <email_address2>, ...'
18 option_list = BaseCommand.option_list + (
23 help='Use all available submissions'),
24 make_option('--force',
28 help='Force sending key even if one was already sent')
31 def handle(self, *args, **options):
32 if len(args) or options['all']:
33 return self.send_keys(*args, **options)
34 self.stdout.write('No submissions selected')
36 def send_keys(self, *args, **options):
41 query = Submission.objects.all()
42 if not options['force']:
43 query = query.filter(key_sent = False)
45 query = query.filter(email__in = args)
47 for submission in query.all():
48 assert len(submission.key) == 30 or (settings.DEBUG and submission.key == DEBUG_KEY)
51 self.send_key(submission)
52 except Exception as e:
54 self.stdout.write('failed sending to: ' + submission.email + ' - ' + str(e))
56 submission.key_sent = True
59 self.stdout.write('key sent to: ' + submission.email)
61 self.stdout.write('sent: ' + str(sent))
63 def send_key(self, submission):
64 self.stdout.write('>>> sending to ' + submission.email)
66 subject = "Egzamin TEM - Twój link do zadań",
67 body = render_to_string('wtem/email_key.txt', dict(submission = submission)),
68 to = [submission.email]