1 # -*- coding: utf-8 -*-
 
   3 from optparse import make_option
 
   5 from django.core.management.base import BaseCommand
 
   6 from django.conf import settings
 
   7 from wtem.management.commands import send_mail
 
   8 from django.template.loader import render_to_string
 
  10 from wtem.models import Submission, DEBUG_KEY
 
  13 class Command(BaseCommand):
 
  14     help = 'Sends personalized links to WTEM contestants'
 
  15     args = '<email_address1>, <email_address2>, ...'
 
  17     option_list = BaseCommand.option_list + (
 
  23             help='Use all available submissions'),
 
  29             help='Force sending key even if one was already sent')
 
  32     def handle(self, *args, **options):
 
  33         if len(args) or options['all']:
 
  34             return self.send_keys(*args, **options)
 
  35         self.stdout.write('No submissions selected')
 
  37     def send_keys(self, *args, **options):
 
  42         submissions = Submission.objects.all()
 
  43         if not options['force']:
 
  44             submissions = submissions.filter(key_sent=False)
 
  46             submissions = submissions.filter(email__in=args)
 
  48         for submission in submissions:
 
  49             assert len(submission.key) == 30 or (settings.DEBUG and submission.key == DEBUG_KEY)
 
  52                 self.send_key(submission)
 
  53             except Exception as e:
 
  55                 self.stdout.write('failed sending to: ' + submission.email + ' - ' + str(e))
 
  57                 submission.key_sent = True
 
  60                 self.stdout.write('key sent to: ' + submission.email)
 
  62         self.stdout.write('sent: ' + str(sent))
 
  64     def send_key(self, submission):
 
  65         self.stdout.write('>>> sending to ' + submission.email)
 
  67             subject="WLEM - Twój link do egzaminu",
 
  68             body=render_to_string('wtem/email_key.txt', dict(submission=submission)),
 
  69             to=[submission.email])