minor fixes
[edumed.git] / wtem / management / commands / wtem_generate_keys.py
index 75847ae..06ea89f 100644 (file)
@@ -1,27 +1,25 @@
-from django.core.management.base import BaseCommand, CommandError
+# -*- coding: utf-8 -*-
+from django.core.management.base import BaseCommand
 
-from contact.models import Contact
-from wtem.models import Submission
+from wtem.models import Submission, Confirmation
 
 
 class Command(BaseCommand):
-    help = 'Sends personalized links to WTEM contestants'
 
-    def handle(self, *args, **options):
+    def handle(self, **options):
         new = 0
         skipped = 0
 
-        for wtem_contact in Contact.objects.filter(form_tag = 'wtem'):
-            for student in wtem_contact.body['student']:
-                if not Submission.objects.filter(email = student['email']).exists():
-                    args = dict()
-                    for attr in ['first_name', 'last_name', 'email']:
-                        args[attr] = student[attr]
-                    args['contact'] = wtem_contact
-                    Submission.create(**args)
-                    new += 1
-                else:
-                    self.stdout.write('skipping ' + student['email'] + ': already exists.')
-                    skipped += 1
+        emails = list(Submission.objects.values_list('email', flat=True))
+        for confirmation in Confirmation.objects.exclude(email__in=emails):
+            if not Submission.objects.filter(email=confirmation.email).exists():
+                args = {}
+                for attr in ['first_name', 'last_name', 'email', 'contact']:
+                    args[attr] = getattr(confirmation, attr)
+                Submission.create(**args)
+                new += 1
+            else:
+                self.stdout.write('skipping ' + confirmation.email + ': already exists.')
+                skipped += 1
 
         self.stdout.write('New: ' + str(new) + ', skipped: ' + str(skipped))