update send-results command and templates
authorJan Szejko <janek37@gmail.com>
Thu, 30 Nov 2017 15:59:59 +0000 (16:59 +0100)
committerJan Szejko <janek37@gmail.com>
Thu, 30 Nov 2017 15:59:59 +0000 (16:59 +0100)
wtem/management/commands/wtem_send_results.py
wtem/templates/wtem/results_student_failed.txt
wtem/templates/wtem/results_student_passed.txt
wtem/templates/wtem/results_teacher.txt

index f3f9917..f4748c6 100644 (file)
@@ -2,6 +2,7 @@
 
 from optparse import make_option
 
 
 from optparse import make_option
 
+from collections import defaultdict
 from django.core.management.base import BaseCommand
 from wtem.management.commands import send_mail
 from django.utils import translation
 from django.core.management.base import BaseCommand
 from wtem.management.commands import send_mail
 from django.utils import translation
@@ -11,9 +12,9 @@ from wtem.models import Submission
 
 
 def get_submissions():
 
 
 def get_submissions():
-    return sorted(Submission.objects.exclude(answers=None).all(), key=lambda s: -s.final_result)
+    return sorted(Submission.objects.exclude(answers=None), key=lambda s: -s.final_result)
 
 
-minimum = 34
+minimum = 63.06
 
 
 class Command(BaseCommand):
 
 
 class Command(BaseCommand):
@@ -37,14 +38,22 @@ class Command(BaseCommand):
             dest='only_to',
             default=None,
             help='Send email only to one address'),
             dest='only_to',
             default=None,
             help='Send email only to one address'),
+        make_option(
+            '--dummy',
+            action='store_true',
+            dest='dummy',
+            default=False,
+            help='Print emails instead of sending them'),
     )
 
     def __init__(self):
         super(Command, self).__init__()
         self.sent = self.failed = None
     )
 
     def __init__(self):
         super(Command, self).__init__()
         self.sent = self.failed = None
+        self.dummy = None
 
     def handle(self, *args, **options):
         translation.activate('pl')
 
     def handle(self, *args, **options):
         translation.activate('pl')
+        self.dummy = options['dummy']
         for target in ['to_teachers', 'to_students']:
             if options[target]:
                 self.sent = 0
         for target in ['to_teachers', 'to_students']:
             if options[target]:
                 self.sent = 0
@@ -63,7 +72,7 @@ class Command(BaseCommand):
                 template = 'results_student_failed.txt'
             else:
                 template = 'results_student_passed.txt'
                 template = 'results_student_failed.txt'
             else:
                 template = 'results_student_passed.txt'
-            message = render_to_string('wtem/' + template, dict(final_result=submission.final_result))
+            message = render_to_string('wtem/' + template, dict(final_result=round(submission.final_result, 2)))
             self.send_message(message, subject, submission.email)
 
         self.sum_up()
             self.send_message(message, subject, submission.email)
 
         self.sum_up()
@@ -72,12 +81,12 @@ class Command(BaseCommand):
         self.stdout.write('>>> Sending results to teachers')
         subject = 'Wyniki I etapu Olimpiady Cyfrowej'
 
         self.stdout.write('>>> Sending results to teachers')
         subject = 'Wyniki I etapu Olimpiady Cyfrowej'
 
-        submissions_by_contact = dict()
+        submissions_by_contact = defaultdict(list)
 
         for submission in get_submissions():
             if options['only_to'] and submission.contact.contact != options['only_to']:
                 continue
 
         for submission in get_submissions():
             if options['only_to'] and submission.contact.contact != options['only_to']:
                 continue
-            submissions_by_contact.setdefault(submission.contact.contact, []).append(submission)
+            submissions_by_contact[submission.contact.contact].append(submission)
 
         for contact_email, submissions in submissions_by_contact.items():
             message = render_to_string('wtem/results_teacher.txt', dict(submissions=submissions))
 
         for contact_email, submissions in submissions_by_contact.items():
             message = render_to_string('wtem/results_teacher.txt', dict(submissions=submissions))
@@ -90,6 +99,10 @@ class Command(BaseCommand):
 
     def send_message(self, message, subject, email):
         self.stdout.write('>>> sending results to %s' % email)
 
     def send_message(self, message, subject, email):
         self.stdout.write('>>> sending results to %s' % email)
+        if self.dummy:
+            self.stdout.write(message)
+            self.sent += 1
+            return
         try:
             send_mail(subject=subject, body=message, to=[email])
         except BaseException, e:
         try:
             send_mail(subject=subject, body=message, to=[email])
         except BaseException, e:
index c984fb9..13e1433 100644 (file)
@@ -1,19 +1,17 @@
-{% load l10n %}Witaj,
+{% load l10n %}Dzień dobry,
 
 
-Informujemy, że wszystkie testy rozwiązane w ramach zawodów I stopnia I edycji Olimpiady Cyfrowej zostały ocenione, a nazwiska osób, które awansowały do II etapu, są już znane. 
+Informujemy, że wszystkie testy rozwiązane w ramach zawodów I stopnia II edycji Olimpiady Cyfrowej zostały ocenione, a nazwiska osób, które awansowały do II etapu, są już znane.
 
 
-W I etapie Olimpiady Cyfrowej test rozwiązało i uzyskało dodatni wynik aż 1725 osób. Ten sukces Olimpiady ogromnie nas cieszy. Ze względu na tak wysoką liczbę Uczestników i Uczestniczek oraz wysoki poziom współzawodnictwa Komitet postanowił – zgodnie z punktem 4.4.11. Regulaminu Olimpiady – podnieść próg punktowy pozwalający na awans do II etapu do 80% możliwych do uzyskanych punktów. 
+W I etapie Olimpiady Cyfrowej do testu przystąpiło 2 346 osób z 242 szkół z całej Polski. Ten sukces Olimpiady ogromnie nas cieszy. Ze względu na tak dużą liczbę Uczestników i Uczestniczek oraz wysoki poziom współzawodnictwa Komitet Główny postanowił – zgodnie z punktem 4.4.11. Regulaminu Olimpiady – przyjąć do II etapu 299 osób, które otrzymały co najmniej 63,07 pkt.
 
 
-Oznacza to, że Uczestnicy i Uczestniczki zakwalifikowani do II etapu musieli uzyskać na teście minimum 34 punkty.  
-
-Jednocześnie informujemy, że łączna liczba punktów do zdobycia wyniosła 42,5 pkt. Ze względu na błąd w zapisie w jednym ze zdań w zad. 6 dotyczącym algorytmów, który został zauważony przez uczestników podczas rozwiązywania testu, Komitet postanowił nie uwzględniać go podczas oceny zadania i zmniejszyć liczbę punktów do zdobycia za zad. 6 o pół punktu. 
+Jednocześnie informujemy, że łączna liczba punktów do zdobycia wyniosła 100. Za każde zadanie można było otrzymać maksymalnie 2 punkty.
 
 Liczba punktów zdobytych przez Ciebie w teście to {% localize on %}{{final_result}}{% endlocalize %}.
 
 
 Liczba punktów zdobytych przez Ciebie w teście to {% localize on %}{{final_result}}{% endlocalize %}.
 
-Niestety, ten wynik nie uprawnia Cię do wzięcia udziału w zawodach II stopnia. Liczba punktów, która zapewnia awans to 34. Zachęcamy do zgłębiania wiedzy za zakresu edukacji cyfrowej i wzięcia udziału w kolejnej edycji Olimpiady.
+Niestety, ten wynik nie uprawnia Cię do wzięcia udziału w zawodach II stopnia. Liczba punktów, która zapewnia awans to 63,07. Zachęcamy do zgłębiania wiedzy za zakresu edukacji cyfrowej i wzięcia udziału w kolejnej edycji Olimpiady.
 
 
-W razie jakichkolwiek pytań prosimy o kontakt.
+W razie pytań prosimy o kontakt.
 
 Pozdrawiamy,
 Zespół Olimpiady Cyfrowej
 
 Pozdrawiamy,
 Zespół Olimpiady Cyfrowej
-fundacja Nowoczesna Polska
+fundacja Nowoczesna Polska
\ No newline at end of file
index 17a6fcd..a51489b 100644 (file)
@@ -1,20 +1,18 @@
-{% load l10n %}Witaj,
+{% load l10n %}Dzień dobry,
 
 
-Z radością informujemy, że wszystkie testy rozwiązane w ramach zawodów I stopnia I edycji Olimpiady Cyfrowej zostały ocenione, a nazwiska osób, które awansowały do II etapu, są już znane. 
+Informujemy, że wszystkie testy rozwiązane w ramach zawodów I stopnia II edycji Olimpiady Cyfrowej zostały ocenione, a nazwiska osób, które awansowały do II etapu, są już znane.
 
 
-W I etapie Olimpiady Cyfrowej test rozwiązało i uzyskało dodatni wynik aż 1725 osób. Ten sukces Olimpiady ogromnie nas cieszy. Ze względu na tak wysoką liczbę Uczestników i Uczestniczek oraz wysoki poziom współzawodnictwa Komitet postanowił – zgodnie z punktem 4.4.11. Regulaminu Olimpiady – podnieść próg punktowy pozwalający na awans do II etapu do 80% możliwych do uzyskanych punktów. 
+W I etapie Olimpiady Cyfrowej do testu przystąpiło 2 346 osób z 242 szkół z całej Polski. Ten sukces Olimpiady ogromnie nas cieszy. Ze względu na tak dużą liczbę Uczestników i Uczestniczek oraz wysoki poziom współzawodnictwa Komitet Główny postanowił – zgodnie z punktem 4.4.11. Regulaminu Olimpiady – przyjąć do II etapu 299 osób, które otrzymały co najmniej 63,07 pkt.
 
 
-Oznacza to, że Uczestnicy i Uczestniczki zakwalifikowani do II etapu musieli uzyskać na teście minimum 34 punkty.  
-
-Jednocześnie informujemy, że łączna liczba punktów do zdobycia wyniosła 42,5 pkt. Ze względu na błąd w zapisie w jednym ze zdań w zad. 6 dotyczącym algorytmów, który został zauważony przez uczestników podczas rozwiązywania testu, Komitet postanowił nie uwzględniać go podczas oceny zadania i zmniejszyć liczbę punktów do zdobycia za zad. 6 o pół punktu. 
+Jednocześnie informujemy, że łączna liczba punktów do zdobycia wyniosła 100. Za każde zadanie można było otrzymać maksymalnie 2 punkty.
 
 Liczba punktów zdobytych przez Ciebie w teście to {% localize on %}{{final_result}}{% endlocalize %}.
 
 Wynik ten uprawnia Cię do wzięcia udziału w zawodach II stopnia Olimpiady Cyfrowej. Gratulujemy!
 
 
 Liczba punktów zdobytych przez Ciebie w teście to {% localize on %}{{final_result}}{% endlocalize %}.
 
 Wynik ten uprawnia Cię do wzięcia udziału w zawodach II stopnia Olimpiady Cyfrowej. Gratulujemy!
 
-Temat projektu do realizacji w zawodach II stopnia oraz dodatkowe wytyczne zostaną podane do wiadomości zakwalifikowanych Uczestników i Uczestniczek w wiadomościach mailowych i na stronie Olimpiady Cyfrowej dn. 2 stycznia 2016 r.
+Temat projektu do realizacji w zawodach II stopnia oraz dodatkowe wytyczne zostaną podane do wiadomości zakwalifikowanych Uczestników i Uczestniczek w wiadomościach mailowych i na stronie Olimpiady Cyfrowej dn. 2 stycznia 2018 r.
 
 
-W razie jakichkolwiek pytań prosimy o kontakt.
+W razie pytań prosimy o kontakt.
 
 Pozdrawiamy,
 Zespół Olimpiady Cyfrowej
 
 Pozdrawiamy,
 Zespół Olimpiady Cyfrowej
index c89c9da..08d66b4 100644 (file)
@@ -1,23 +1,21 @@
 Dzień dobry,
 
 Dzień dobry,
 
-Z radością informujemy, że wszystkie testy rozwiązane w ramach zawodów I stopnia I edycji Olimpiady Cyfrowej zostały ocenione, a nazwiska osób, które awansowały do II etapu, są już znane. 
+Informujemy, że wszystkie testy rozwiązane w ramach zawodów I stopnia II edycji Olimpiady Cyfrowej zostały ocenione, a nazwiska osób, które awansowały do II etapu, są już znane.
 
 
-W pierwszym etapie Olimpiady Cyfrowej test rozwiązało i uzyskało powyżej 0 punktów aż 1725 osób. Ten sukces Olimpiady ogromnie nas cieszy. Ze względu na tak wysoką liczbę Uczestników i Uczestniczek oraz wysoki poziom współzawodnictwa Komitet postanowił – zgodnie z punktem 4.4.11. Regulaminu Olimpiady – podnieść próg punktowy pozwalający na awans do II etapu do 80% możliwych do uzyskanych punktów. 
+W I etapie Olimpiady Cyfrowej do testu przystąpiło 2 346 osób z 242 szkół z całej Polski. Ten sukces Olimpiady ogromnie nas cieszy. Ze względu na tak dużą liczbę Uczestników i Uczestniczek oraz wysoki poziom współzawodnictwa Komitet Główny postanowił – zgodnie z punktem 4.4.11. Regulaminu Olimpiady – przyjąć do II etapu 299 osób, które otrzymały co najmniej 63,07 pkt.
 
 
-Oznacza to, że Uczestnicy i Uczestniczki zakwalifikowani do II etapu musieli uzyskać na teście minimum 34 punkty. Udało się to 383 osobom, którym serdecznie gratulujemy! 
+Jednocześnie informujemy, że łączna liczba punktów do zdobycia wyniosła 100. Za każde zadanie można było otrzymać maksymalnie 2 punkty.
 
 
-Jednocześnie informujemy, że łączna liczba punktów do zdobycia wyniosła 42,5 pkt. Ze względu na błąd w zapisie w jednym ze zdań w zad. 6 dotyczącym algorytmów, który został zauważony przez uczestników podczas rozwiązywania testu, Komitet postanowił nie uwzględniać go podczas oceny zadania i zmniejszyć liczbę punktów do zdobycia za zad. 6 o pół punktu. 
+Temat projektu do realizacji w zawodach II stopnia oraz dodatkowe wytyczne zostaną podane do wiadomości zakwalifikowanych Uczestników i Uczestniczek w wiadomościach mailowych i na stronie Olimpiady Cyfrowej dn. 2 stycznia 2018 r.
 
 
-Temat projektu do realizacji w zawodach II stopnia oraz dodatkowe wytyczne zostaną podane do wiadomości zakwalifikowanych Uczestników i Uczestniczek w wiadomościach mailowych i na stronie Olimpiady Cyfrowej dn. 2 stycznia 2016 r.
-
-Wyniki uzyskane przez Pani/Pana podopiecznych:
+Wyniki uzyskane przez Pani/Pana uczniów/uczennice:
 
 {% for submission in submissions %}{{submission.first_name.strip}} {{submission.last_name.strip}}: {{submission.final_result}}
 {% endfor %}
 
 
 {% for submission in submissions %}{{submission.first_name.strip}} {{submission.last_name.strip}}: {{submission.final_result}}
 {% endfor %}
 
-Informacje o wynikach zostały przesłane również Uczestnikom i Uczestniczkom. Prosimy upewnić się, że wszyscy otrzymali wiadomość. Jeśli jednak do nich nie dotarła, prosimy o podanie danych kontaktowych tych osób (imię i nazwisko, adres e-mail).
+Informacje o wynikach zostały przesłane również Uczestnikom i Uczestniczkom. Prosimy upewnić się, że wszyscy otrzymali wiadomość. Jeśli nie dotarła do nich, prosimy o podanie danych kontaktowych tych osób (imię i nazwisko, adres e-mail).
 
 
-W razie jakichkolwiek pytań prosimy o kontakt.
+W razie pytań prosimy o kontakt.
 
 Pozdrawiamy,
 Zespół Olimpiady Cyfrowej
 
 Pozdrawiamy,
 Zespół Olimpiady Cyfrowej