Sending results to students and teachers
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Mon, 16 Dec 2013 13:55:31 +0000 (14:55 +0100)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Wed, 15 Jan 2014 10:28:05 +0000 (11:28 +0100)
wtem/management/commands/wtem_send_results.py [new file with mode: 0644]
wtem/templates/wtem/results_student_failed.txt [new file with mode: 0644]
wtem/templates/wtem/results_student_passed.txt [new file with mode: 0644]
wtem/templates/wtem/results_teacher.txt [new file with mode: 0644]

diff --git a/wtem/management/commands/wtem_send_results.py b/wtem/management/commands/wtem_send_results.py
new file mode 100644 (file)
index 0000000..94c2653
--- /dev/null
@@ -0,0 +1,93 @@
+# -*- coding: utf-8 -*-
+
+from optparse import make_option
+
+from django.core.management.base import BaseCommand
+from django.conf import settings
+from wtem.management.commands import send_mail
+from django.utils import translation
+from django.template.loader import render_to_string
+
+from contact.models import Contact
+from wtem.models import Submission
+
+
+def get_submissions():
+    return Submission.objects.exclude(answers = None).all()
+
+minimum = 47.5
+
+class Command(BaseCommand):
+
+    option_list = BaseCommand.option_list + (
+        make_option('--to-teachers',
+            action='store_true',
+            dest='to_teachers',
+            default=False,
+            help='Send emails to teachers'),
+        make_option('--to-students',
+            action='store_true',
+            dest='to_students',
+            default=False,
+            help='Send emails to students'),
+    )
+
+    def handle(self, *args, **options):
+        translation.activate('pl')
+        for target in ['to_teachers', 'to_students']:
+            if options[target]:
+                self.sent = 0
+                self.failed = 0
+                getattr(self, 'handle_' + target)(*args, **options)
+
+    def handle_to_students(self, *args, **options):
+        self.stdout.write('>>> Sending results to students')
+        subject = 'Twój wynik w I etapie Wielkiego Turnieju Edukacji Medialnej'
+
+        for submission in get_submissions():
+            final_result = submission.final_result
+            if final_result < minimum:
+                template = 'results_student_failed.txt'
+            else:
+                template = 'results_student_passed.txt'
+            message = render_to_string('wtem/' + template, dict(final_result = submission.final_result))
+            self.send_message(message, subject, submission.email)
+
+        self.sum_up()
+
+    def handle_to_teachers(self, *args, **kwargs):
+        self.stdout.write('>>> Sending results to teachers')
+        subject = 'Wyniki Twoich uczniów w I etapie Wielkiego Turnieju Edukacji Medialnej'
+        failed = sent = 0
+
+        submissions_by_contact = dict()
+
+        for submission in get_submissions():
+            submissions_by_contact.setdefault(submission.contact.id, []).append(submission)
+
+        for contact_id, submissions in submissions_by_contact.items():
+            contact = Contact.objects.get(id=contact_id)
+            message = render_to_string('wtem/results_teacher.txt', dict(submissions = submissions))
+            self.send_message(message, subject, contact.contact)
+
+        self.sum_up()
+
+    def sum_up(self):        
+        self.stdout.write('sent: %s, failed: %s' % (self.sent, self.failed))
+
+    def send_message(self, message, subject, email):
+        self.stdout.write('>>> sending results to %s' % email)
+        try:
+            send_mail(
+                subject = subject,
+                body = message,
+                to = [email]
+            )
+        except:
+            self.failed += 1
+            self.stdout.write('failed sending to: ' + email + ': ' + str(e))
+        else:
+            self.sent += 1
+            self.stdout.write('message sent to: ' + email)
+
+
diff --git a/wtem/templates/wtem/results_student_failed.txt b/wtem/templates/wtem/results_student_failed.txt
new file mode 100644 (file)
index 0000000..591948d
--- /dev/null
@@ -0,0 +1,13 @@
+{% load l10n %}Droga Uczestniczko,
+Drogi Uczestniku,
+
+Twój wynik w I etapie Wielkiego Turnieju Edukacji Medialnej to {% localize on %}{{final_result|floatformat}}{% endlocalize %} pkt.
+
+Do zakwalifikowania się do II etapu konieczne było uzyskanie min. 47,5 pkt.
+
+Dziękujemy za udział w zawodach!
+
+Z pozdrowieniami,
+
+Zespół Edukacji Medialnej
+Fundacja Nowoczesna Polska
\ No newline at end of file
diff --git a/wtem/templates/wtem/results_student_passed.txt b/wtem/templates/wtem/results_student_passed.txt
new file mode 100644 (file)
index 0000000..4ed6904
--- /dev/null
@@ -0,0 +1,14 @@
+{% load l10n %}Droga Uczestniczko,
+Drogi Uczestniku,
+
+Twój wynik w I etapie Wielkiego Turnieju Edukacji Medialnej to {% localize on %}{{final_result|floatformat}}{% endlocalize %} pkt.
+
+Gratulujemy! Zakwalifikowałeś/aś się do II etapu.
+Kolejnym zadaniem, które Cię czeka jest realizacja projektu. Więcej szczegółów opublikujemy na stronie http://edukacjamedialna.edu.pl/wtem 13 stycznia 2014 r.
+
+Dziękujemy za udział w zawodach!
+
+Z pozdrowieniami,
+
+Zespół Edukacji Medialnej
+Fundacja Nowoczesna Polska
\ No newline at end of file
diff --git a/wtem/templates/wtem/results_teacher.txt b/wtem/templates/wtem/results_teacher.txt
new file mode 100644 (file)
index 0000000..a2ff4c5
--- /dev/null
@@ -0,0 +1,16 @@
+Szanowna Pani,
+Szanowny Panie,
+
+Wyniki uzyskane przez zgłoszonych przez Panią/Pana uczestników Turnieju to:
+
+{% for submission in submissions %}{{submission.first_name.strip}}, {{submission.last_name.strip}}: {{submission.final_result|floatformat}}
+{% endfor %}
+
+Pozostali uczestnicy i uczestniczki zgłoszeni przez Panią/Pana nie przystąpili do rozwiązania testu. Do zakwalifikowania się do II etapu konieczne było uzyskanie min. 47,5 pkt. Pełna lista uczestników II etapu dostępna jest na stronie http://edukacjamedialna.edu.pl/wtem.
+
+Dziękujemy za udział w zawodach!
+
+Z pozdrowieniami,
+
+Zespół Edukacji Medialnej
+Fundacja Nowoczesna Polska
\ No newline at end of file