{# chunks? #}
<div class="footer-item">
<p>
- Fundacja Nowoczesna Polska<br/>
+ fundacja Nowoczesna Polska<br/>
<br/>
ul. Marszałkowska 84/92 lok. 125<br/>
00-514 Warszawa<br/>
Z pozdrowieniami
Zespół Edukacji Medialnej
-Fundacja Nowoczesna Polska
+fundacja Nowoczesna Polska
są prawidłowe.
Wszystkie ogłoszenia związane z Turniejem będą publikowane na stronie
-http://edukacjamedialna.edu.pl/WTEM. W razie pytań lub wątpliwości
+{% url "info" "turniej/" %}. W razie pytań lub wątpliwości
możesz kontaktować się z nami, pisząc na adres
edukacjamedialna@nowoczesnapolska.org.pl.
Z pozdrowieniami
Zespół Edukacji Medialnej
-Fundacja Nowoczesna Polska
+fundacja Nowoczesna Polska
Informacje związane z projektem do realizacji na pierwszym etapie
oraz wszystkie ogłoszenia związane z Turniejem będą publikowane
-na stronie http://edukacjamedialna.edu.pl/WTEM. W razie pytań lub
+na stronie {% url "info" "turniej/" %}. W razie pytań lub
wątpliwości możesz kontaktować się z nami, pisząc na adres
edukacjamedialna@nowoczesnapolska.org.pl.
Z pozdrowieniami
Zespół Edukacji Medialnej
-Fundacja Nowoczesna Polska
+fundacja Nowoczesna Polska
W ten sposób zweryfikujemy, czy podane adresy są prawidłowe. </p>
<p>Zespół Edukacji Medialnej<br>
-Fundacja Nowoczesna Polska</p>
+fundacja Nowoczesna Polska</p>
{% endblock %}
+# -*- coding: utf-8 -*-
from django.conf.urls import patterns, include, url
from django.conf import settings
from .views import HomeView, AvatarlessProfileEditView
-
urlpatterns = patterns('',
url(r'^$', HomeView.as_view(), name="home"),
url(r'^lekcje/', include('catalogue.urls')),
url(r'^forum/', include('forum.urls')),
url(r'^forum/', include('pybb.urls', namespace='pybb')),
url(r'^kompetencje/', include('curriculum.urls')),
- #url(r'^wtem/', include('wtem.urls')),
- url(r'^tem/', include('wtem.urls')),
+ url(r'^wtem/', include('wtem.urls')),
)
continue
self.fields['attachment_for_' + str(exercise['id'])] = forms.FileField(required = False)
- def save(self):
- submission = super(WTEMForm, self).save()
+ def save(self, commit=True):
+ submission = super(WTEMForm, self).save(commit=commit)
for name, file in self.files.items():
m = re.match(r'attachment_for_(\d+)(?:__(.*))?', name)
exercise_id = int(m.group(1))
-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
class Command(BaseCommand):
-
+
def handle(self, *ids, **options):
new = 0
skipped = 0
- query = Contact.objects.filter(form_tag = 'wtem').order_by('-created_at')
+ query = Contact.objects.filter(form_tag='wtem').order_by('-created_at')
if ids:
query = query.filter(pk__in=ids)
for wtem_contact in query:
for student in wtem_contact.body['student']:
- if not Submission.objects.filter(email = student['email']).exists():
+ if not Submission.objects.filter(email=student['email']).exists():
args = dict()
for attr in ['first_name', 'last_name', 'email']:
args[attr] = student[attr]
# -*- coding: utf-8 -*-
-import sys
from optparse import make_option
-from django.core.management.base import BaseCommand, CommandError
+from django.core.management.base import BaseCommand
from django.conf import settings
from wtem.management.commands import send_mail
from django.template.loader import render_to_string
args = '<email_address1>, <email_address2>, ...'
option_list = BaseCommand.option_list + (
- make_option('--all',
+ make_option(
+ '--all',
action='store_true',
dest='all',
default=False,
help='Use all available submissions'),
- make_option('--force',
+ make_option(
+ '--force',
action='store_true',
dest='force',
default=False,
skipped = 0
failed = 0
- query = Submission.objects.all()
+ submissions = Submission.objects.all()
if not options['force']:
- query = query.filter(key_sent = False)
+ submissions = submissions.filter(key_sent=False)
if len(args):
- query = query.filter(email__in = args)
+ submissions = submissions.filter(email__in=args)
- for submission in query.all():
+ for submission in submissions:
assert len(submission.key) == 30 or (settings.DEBUG and submission.key == DEBUG_KEY)
try:
def send_key(self, submission):
self.stdout.write('>>> sending to ' + submission.email)
send_mail(
- subject = "Egzamin TEM - Twój link do zadań",
- body = render_to_string('wtem/email_key.txt', dict(submission = submission)),
- to = [submission.email]
- )
+ subject="WTEM - Twój link do zadań",
+ body=render_to_string('wtem/email_key.txt', dict(submission=submission)),
+ to=[submission.email])
+# -*- coding: utf-8 -*-
import random
import string
import os
+import json
from django.db import models
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
-from django.utils import simplejson
from django.utils.translation import ugettext as _
from jsonfield import JSONField
from contact.models import Contact
f = file(os.path.dirname(__file__) + '/fixtures/exercises.json')
-exercises = simplejson.loads(f.read())
+exercises = json.loads(f.read())
f.close()
DEBUG_KEY = '12345'
+
class Submission(models.Model):
- contact = models.ForeignKey(Contact, null = True)
- key = models.CharField(max_length = 30, unique = True)
- first_name = models.CharField(max_length = 100)
- last_name = models.CharField(max_length = 100)
- email = models.EmailField(max_length = 100, unique = True)
- answers = models.CharField(max_length = 65536, null = True, blank = True)
- key_sent = models.BooleanField(default = False)
+ contact = models.ForeignKey(Contact, null=True)
+ key = models.CharField(max_length=30, unique=True)
+ first_name = models.CharField(max_length=100)
+ last_name = models.CharField(max_length=100)
+ email = models.EmailField(max_length=100, unique=True)
+ answers = models.CharField(max_length=65536, null=True, blank=True)
+ key_sent = models.BooleanField(default=False)
marks = JSONField(default={})
- examiners = models.ManyToManyField(User, null = True, blank = True)
- end_time = models.CharField(max_length = 5, null = True, blank = True)
+ examiners = models.ManyToManyField(User, null=True, blank=True)
+ end_time = models.CharField(max_length=5, null=True, blank=True)
def __unicode__(self):
return ', '.join((self.last_name, self.first_name, self.email))
def generate_key(cls):
key = ''
while not key or key in [record['key'] for record in cls.objects.values('key')]:
- key = ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for i in range(30))
+ key = ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits)
+ for i in range(30))
return key
@classmethod
- def create(cls, first_name, last_name, email, key = None, contact = None):
+ def create(cls, first_name, last_name, email, key=None, contact=None):
submission = cls(
- contact = contact,
- key = key if key else Submission.generate_key(),
- first_name = first_name,
- last_name = last_name,
- email = email
+ contact=contact,
+ key=key if key else Submission.generate_key(),
+ first_name=first_name,
+ last_name=last_name,
+ email=email
)
submission.save()
if mark == 'None':
del self.marks[user_id][exercise_id]
-
def get_exercise_marks_by_examiner(self, exercise_id):
marks = dict()
for examiner_id, examiner_marks in self.marks.items():
return marks
def get_final_exercise_mark(self, exercise_id):
- #exercise = exercises[int(exercise_id)-1]
+ # exercise = exercises[int(exercise_id)-1]
exercise = [e for e in exercises if str(e['id']) == str(exercise_id)][0]
if exercise_checked_manually(exercise):
marks_by_examiner = self.get_exercise_marks_by_examiner(exercise_id)
else:
if not self.answers:
return None
- answer = simplejson.loads(self.answers)[exercise_id]['closed_part']
+ answer = json.loads(self.answers)[exercise_id]['closed_part']
t = exercise['type']
if t == 'edumed_uporzadkuj':
return exercise['points'] if map(int, answer) == exercise['answer'] else 0
if exercise.get('answer_mode', None) == 'all_or_nothing':
toret = exercise['points'] if map(int, answer) == exercise['answer'] else 0
else:
- for id in map(int, answer):
- if id in exercise['answer']:
+ for answer_id in map(int, answer):
+ if answer_id in exercise['answer']:
toret += exercise['points_per_hit']
return toret
if t == 'edumed_prawdafalsz':
@property
def final_result(self):
final = 0
- #for exercise_id in map(str,range(1, len(exercises) + 1)):
+ # for exercise_id in map(str,range(1, len(exercises) + 1)):
for exercise_id in [str(x['id']) for x in exercises]:
mark = self.get_final_exercise_mark(exercise_id)
if mark is not None:
def final_result_as_string(self):
return ('%.2f' % self.final_result).rstrip('0').rstrip('.')
+
class Attachment(models.Model):
submission = models.ForeignKey(Submission)
exercise_id = models.IntegerField()
tag = models.CharField(max_length=128, null=True, blank=True)
- file = models.FileField(upload_to = 'wtem/attachment')
+ file = models.FileField(upload_to='wtem/attachment')
class Assignment(models.Model):
- user = models.ForeignKey(User, unique = True)
+ user = models.ForeignKey(User, unique=True)
exercises = JSONField()
def clean(self):
if not isinstance(self.exercises, list):
raise ValidationError(_('Assigned exercises must be declared in a list format'))
- #for exercise in self.exercises:
- # if not isinstance(exercise, int) or exercise < 1:
- # raise ValidationError(_('Invalid exercise id: %s' % exercise))
+ # for exercise in self.exercises:
+ # if not isinstance(exercise, int) or exercise < 1:
+ # raise ValidationError(_('Invalid exercise id: %s' % exercise))
def __unicode__(self):
- return self.user.username + ': ' + ','.join(map(str,self.exercises))
+ return self.user.username + ': ' + ','.join(map(str, self.exercises))
def exercise_checked_manually(exercise):
+++ /dev/null
-{% load wtem_csv %}email,nazwisko,imie,suma{% for exercise_id in exercise_ids %}{% csv_header exercise_id submissionsSet %}{% endfor %}{% for submission in submissionsSet.submissions %}
-{{submission.email}},{{submission.last_name}},{{submission.first_name}},{{submission.final_result_as_string}}{% for exercise_id in exercise_ids %},{% csv_row_fragment exercise_id submission submissionsSet %}{% endfor %}{% endfor %}
\ No newline at end of file
+++ /dev/null
-{% extends "base.html" %}
-
-{% block title %}Wielki Turniej Edukacji Medialnej{% endblock %}
-
-{% block body %}
-
- <h1>Wielki Turniej Edukacji Medialnej</h1>
-
- {% block contact_form_description %}
- <p class="notice">Rejestracja uczestników została zamknięta.</p>
- {% endblock %}
-
-{% endblock %}
+++ /dev/null
-Droga Trenerko/Drogi Trenerze,
-
-Poniżej znajduje się wygenerowany specjalnie dla Ciebie link, pod którym będziesz mógł/mogła rozwiązać zadania egzaminacyjne TEM.
-Pamiętaj, że egzamin rozpocznie się dziś, 16 listopada o godz. 16.00. Na rozwiązanie zadań masz dokładnie tydzień.
-W razie dodatkowych pytań skontaktuj się z koordynatorką projektu, Dorotą Górecką dorotagorecka@nowoczesnapolska.org.pl.
-
-https://edukacjamedialna.edu.pl{% url 'wtem_form' key=submission.key %}
-
-Powodzenia!
-
-Zespół Edukacji Medialnej
-Fundacja Nowoczesna Polska
-
+++ /dev/null
-Poniżej znajduje się wygenerowany specjalnie dla Ciebie link, pod którym będziesz mógł/mogła rozwiązać zadania pierwszego etapu Wielkiego Turnieju Edukacji Medialnej:
-
-http://edukacjamedialna.edu.pl{% url 'wtem_form' key=submission.key %}
-
-Pierwszy etap Turnieju odbędzie się we wtorek 18 listopada o godz. 16.30. Na rozwiązanie testu będziesz mieć ok. 90 min. Aby rozwiązać test, potrzebny Ci będzie komputer ze stabilnym łączem internetowym oraz zainstalowaną i zaktualizowaną przeglądarką.
-
-Każdy uczestnik otrzymał indywidualny link, pod którym może rozwiązywać zadania samodzielnie. Wszelkie działania mogące świadczyć o tym, że uczestnik nie rozwiązuje testu samodzielnie, np. wchodzenie na stronę z zadaniami przez więcej niż jedną osobę, będą przez nas śledzone i poskutkują dyskwalifikacją.
-
-W razie dodatkowych pytań możesz kontaktować się z nami pod adresem edukacjamedialna@nowoczesnapolska.org.pl lub numerem telefonu +48 22 621-30-17.
-
-Przypominamy, że główną nagrodą w Turnieju jest tygodniowy pobyt na Digital Media Summer Camp na Mercer University w Macon (Georgia, USA).
-
-Powodzenia!
-
-Zespół Edukacji Medialnej
-Fundacja Nowoczesna Polska
\ No newline at end of file
+++ /dev/null
-Szanowni Państwo,
-
-Informujemy, że na podane przez Państwa adresy e-mail uczestników i uczestniczek Wielkiego Turnieju Edukacji Medialnej zostały wysłane indywidualne linki, które pozwolą im przystąpić do I etapu Turnieju.
-
-Uprzejmie prosimy o sprawdzenie, czy wszyscy otrzymali wiadomość z linkiem. Jeśli któryś z uczestników nie otrzymał swojej instrukcji, prosimy o informację na adres edukacjamedialna@nowoczesnapolska.org.pl najpóźniej do poniedziałku 17 listopada do godz. 12.00. Zgłoszenie problemu powinno zawierać:
-* imię, nazwisko, adres e-mail uczestnika, który nie otrzymał wiadomości z linkiem,
-* imię, nazwisko, adres e-mail Opiekuna/Opiekunki (zgodnie z danymi z formularza zgłoszeniowego).
-
-Pierwszy etap Turnieju odbędzie się we wtorek 18 listopada o godz. 16.30. Na rozwiązanie testu uczestnicy będą mieć ok. 90 min. Aby rozwiązać test, potrzebny jest komputer ze stabilnym łączem internetowym oraz zainstalowaną i zaktualizowaną przeglądarką.
-
-Przypominamy, że główną nagrodą w Turnieju jest tygodniowy pobyt na Digital Media Summer Camp na Mercer University w Macon (Georgia, USA).
-
-W razie dodatkowych pytań prosimy kontaktować się z nami pod adresem edukacjamedialna@nowoczesnapolska.org.pl lub pod numerem telefonu +48 22 621-30-17.
-
-Z pozdrowieniami
-
-Zespół Edukacji Medialnej
-Fundacja Nowoczesna Polska
\ No newline at end of file
+++ /dev/null
-Pierwszy etap Wielkiego Turnieju Edukacji Medialnej już wkrótce
\ No newline at end of file
+++ /dev/null
-<div class="exercise exercise-wtem prawdafalsz" data-type="prawdafalsz" data-id="{{exercise.id}}">
-
- <h3>Zadanie {{no}}</h3>
-
- <div class="question" data-no="1">
- <div class="description">
- {% for para in exercise.description %}
- <p class="paragraph">
- {{para}}
- </p>
- {% endfor %}
- </div>
-
- <ul class="lista punkt ">
- {% for statement in exercise.statements %}
- <li class="question-piece">
- <span class="buttons">
- <a href="#" data-value="true" class="true">Prawda</a>
- <a href="#" data-value="false" class="false">Fałsz</a>
- </span>
- {{statement.0}}
- </li>
- {% endfor %}
- </ul>
- </div>
-</div>
\ No newline at end of file
+++ /dev/null
-<div class="exercise exercise-wtem przyporzadkuj" data-type="przyporzadkuj" data-id="{{exercise.id}}">
-
- <h3>Zadanie {{no}}</h3>
-
- <div class="question" data-no="1">
-
- <div class="description">
- {% for para in exercise.description %}
- <p class="paragraph">
- {{para}}
- </p>
-
- {% endfor %}
- </div>
-
- <p class="paragraph">{{exercise.buckets_name|default:"kategorie"|capfirst}}:</p>
-
- <ul class="lista punkt predicate" data-name="kategorie">
- {% for bucket in exercise.buckets %}
- <li data-predicate="{{bucket.id}}">
- {{bucket.title}}
- <ul class="subjects">
- <li class="placeholder multiple ui-droppable accepting"></li>
- </ul>
- </li>
- {% endfor %}
- </ul>
- <br class="clr">
-
- <div class="description" style="margin-bottom:10px;">
- <p class="paragraph">{{exercise.items_name|capfirst}}:</p>
- {% if not exercise.hide_default_instruction %}
- <span class="instruction">Przeciągnij i upuść numery odpowiedzi w wybranym polu powyżej.</span>
- {% endif %}
- {% if exercise.items_instruction %}
- <span class="instruction">{{exercise.items_instruction}}</span>
- {% endif %}
- </div>
-
- <ul class="lista punkt subject {% if exercise.items_inline %}wtem-items-inline{% endif %}" data-target="kategorie">
- {% for item in exercise.items %}
- {% comment %}
- data-solution set to single bogus value only to indicate that this piece has no multiple solutions, not used otherwise (see: is_multiple in edumed.coffee).
- {% endcomment %}
-
- {% if item.img or item.desc %}
- <li style="magin-bottom:5px;">
- <span data-solution="1" data-no="{{forloop.counter}}" data-id="{{item.id}}" class="question-piece draggable ui-draggable">{{item.text}}</span>
-
- {% if item.img %}
- {% if item.href %}
- <a href="{% if not item.href_absolute %}/static/wtem/img/{% endif %}{{item.href}}" target="wtem_aside">
- {% endif %}
-
- <img src="/static/wtem/img/{{item.img}}"/>
-
- {% if item.href %}</a>{% endif %}
- {% endif %}
- {% if item.desc %}
- {{item.desc}}
- {% endif %}
- </li>
- {% else %}
- <li data-solution="1" data-no="{{forloop.counter}}" data-id="{{item.id}}" class="question-piece draggable ui-draggable">{{item.text}}</li>
- {% endif %}
-
- {% endfor %}
- </ul>
-
- <br class="clr">
-
- {% if exercise.description_after %}
- {% autoescape off %}
- {% for para in exercise.description_after %}
- <p class="paragraph">
- {{para}}
- </p>
- {% endfor %}
- {% endautoescape %}
- {% endif %}
-
- </div>
-
-</div>
-
+++ /dev/null
-<div class="exercise exercise-wtem uporzadkuj" data-type="uporzadkuj" data-id="{{exercise.id}}">
-
- <h3>Zadanie {{no}}</h3>
-
- <div class="question" data-no="1">
- <div class="description">
- {% for para in exercise.description %}
- <p class="paragraph">
- {{para}}
- </p>
- {% endfor %}
- <span class="instruction">Kliknij i przytrzymaj wybraną odpowiedź, następnie przeciągnij w nowe miejsce.</span>
- </div>
-
- <ol class="lista num ui-sortable">
- {% for item in exercise.items %}
- <li class="question-piece" data-pos="{{item.id}}">{{item.text}}</li>
- {% endfor %}
- </ol>
-
- </div>
-</div>
-
+++ /dev/null
-<div class="exercise exercise-wtem wybor" data-type="wybor" data-id="{{exercise.id}}">
-
- <h3>Zadanie {{no}}</h3>
-
- {% autoescape off %}
- <div class="description">
- {% for para in exercise.description %}
- <p class="paragraph">
- {{para}}
- </p>
- {% endfor %}
- <span class="instruction">
- {% if exercise.answer|length == 1 %}
- Tylko jedna odpowiedź jest prawidłowa.
- {% else %}
- Zaznacz wszystkie prawidłowe odpowiedzi.
- {% endif %}
- </span>
- </div>
- {% endautoescape %}
-
- <div class="question" data-no="1">
- <ol class="lista num">
- {% for option in exercise.options %}
- <li class="question-piece" data-name="{{option.id}}">
- <input type="{% if exercise.answer|length == 1 %}radio{% else %}checkbox{% endif %}" name="{% if exercise.answer|length == 1 %}e{{no}}{% else %}e{{no}}_{{option.id}}{% endif %}" id="e{{no}}_{{option.id}}">
- <label for="e{{no}}_{{option.id}}">{{option.text}}</label>
- </li>
- {% endfor %}
- </ol>
- </div>
-
- {% if exercise.open_part %}
- <div class="open_part">
- <div class="description">
- {% for para in exercise.open_part %}
- <p class="paragraph">
- {{para}}
- </p>
- {% endfor %}
- </div>
- <textarea style="width: 100%; margin-top:10px;" rows="{{exercise.open_part_rows|default:10}}"></textarea>
- </div>
- {% endif %}
-
-</div>
\ No newline at end of file
+++ /dev/null
-<div class="exercise-wtem" data-type="file" data-id="{{exercise.id}}">
-
- <h3>Zadanie {{no}}</h3>
-
- <div class="description">
- {% for para in exercise.description %}
- <p class="paragraph">
- {{para}}
- </p>
- {% endfor %}
- </div>
-
- {% if exercise.max_file_size_string %}
- <p style="font-weight: bold;">Plik nie powinien być większy niż {{exercise.max_file_size_string}}.</p>
- {% endif %}
- <div style="margin: 15px auto; width:300px;">
- <input style="float: left;" type="file" name="attachment_for_{{exercise.id}}"/>
- <div style="clear:both;"></div>
- </div>
-
-
- {% autoescape off %}
- {% for para in exercise.description_after %}
- <p>{{para}}</p>
- {% endfor %}
- {% endautoescape %}
-
-</div>
\ No newline at end of file
+++ /dev/null
-<div class="exercise-wtem" data-type="open" data-id="{{exercise.id}}">
-
- <h3>Zadanie {{no}}</h3>
-
- <div class="description">
- {% autoescape off %}
- {% for para in exercise.description %}
- <p class="paragraph">
- {{para}}
- </p>
- {% endfor %}
- {% endautoescape %}
- </div>
-
- {% if exercise.fields %}
- {% for field in exercise.fields %}
- <div class="wtem-open-field">
- <label class="wtem-caption">{{field.caption}} <span class="label_suffix"></span></label>
- <textarea style="width: 100%;" rows="{{field.rows|default:10}}" data-field-id="{{field.id}}" {% if field.max_length %}maxlength="{{field.max_length}}"{% endif %} {% if field.input_id %}id="{{field.input_id}}"{% endif %}></textarea>
- </div>
- {% endfor %}
- {% else %}
- <textarea style="width: 100%; margin-top:10px;" rows="{{field.rows|default:10}}" {% if field.max_length %}maxlength="{{field.max_length}}"{% endif %} {% if field.input_id %}id="#{{field.input_id}}"{% endif %}></textarea>
- {% endif %}
-
- {% if exercise.description_after %}
- <div class="description">
- {% autoescape off %}
- {% for para in exercise.description_after %}
- <p class="paragraph">
- {{para}}
- </p>
- {% endfor %}
- {% endautoescape %}
- </div>
- {% endif%}
-
-</div>
\ No newline at end of file
+++ /dev/null
-{% extends 'base_super.html' %}
-
-{% block body %}
-<h1>Wielki Turniej Edukacji Medialnej</h1>
-<h2>Niepoprawny link</h2>
-
-<p>Podany adres jest niepoprawny. Żeby móc rozwiązywać zadania, musisz przejść pod dokładnie ten sam adres, co podany w wysłanej do Ciebie wiadomości e-mail.</p>
-
-{% endblock %}
\ No newline at end of file
+++ /dev/null
-{% extends 'base_super.html' %}
-
-{% block body %}
-<h1>Wielki Turniej Edukacji Medialnej</h1>
-<h2>Niepoprawny link</h2>
-
-<p>Podany adres jest niepoprawny. Żeby móc rozwiązywać zadania, musisz przejść pod dokładnie ten sam adres, co podany w wysłanej do Ciebie wiadomości e-mail. Jeśli masz z tym kłopot, skontaktuj się z nami pod adresem <a href="mailto:edukacjamedialna@nowoczesnapolska.org.pl">edukacjamedialna@nowoczesnapolska.org.pl</a>.</p>
-
-{% endblock %}
\ No newline at end of file
+++ /dev/null
-{% extends 'base_super.html' %}
-{% load compressed %}
-{% load static %}
-{% load cache %}
-
-{% block extra_script %}
- {% compressed_js 'wtem' %}
-{% endblock %}
-
-
-
-{% block body %}
-<style>
- .wtem-open-field {
- margin: 10px 0;
- }
- .wtem-open-field textarea {
- margin-top:0;
- }
- .wtem-fixed-info {
- top: 20px;
- left: 20px;
- border: 1px solid black;
- background: #16a487;
- border-radius: 0.938em;
- padding: 5px 2px;
- color: white;
- text-align: center;
- font-weight: bold;
- }
- .wtem-items-inline li {
- display: inline-block;
- }
- .instruction {
- font-weight: bold;
- }
- .wtem-disclaimer {
- font-style: italic;
- font-size: .9em;
- }
-
-</style>
-
-<h1>Wielki Turniej Edukacji Medialnej</h1>
-<div class="wtem-fixed-info">Rozwiązania można wysyłać do godziny {{end_time|default:"18.00"}}. <strong>Nie czekaj na ostatnią chwilę!</strong></div>
-
-<p>Witamy w I etapie Wielkiego Turnieju Edukacji Medialnej. Na rozwiązanie zadań masz czas do godz. {{end_time|default:"18.00"}}. Test składa się z 21 pytań. Niektóre z nich mają charakter otwarty - pamiętaj, żeby zostawić sobie odpowiednią ilość czasu na ich rozwiązanie.</p>
-
-<p>Wszelkie aktualności dotyczące Turnieju możesz znaleźć na <a href="http://edukacjamedialna.edu.pl/wtem" target="_info">edukacjamedialna.edu.pl/wtem</a>.</p>
-
-<p>Powodzenia!<br/>
-Zespół Edukacji Medialnej, Fundacja Nowoczesna Polska</p>
-
-<form method="post" enctype="multipart/form-data">
-
-{% cache 30 wtem %}
-{% for exercise in exercises %}
- {% with 'wtem/exercises/'|add:exercise.type|add:'.html' as template_name %}
- {% include template_name with exercise=exercise no=forloop.counter %}
- {% endwith %}
-{% endfor %}
-{% endcache %}
-
-
-<hr/>
-<input type="hidden" name="answers" value=""/>
-
-<p style="text-align:center; margin-top:20px;">Sprawdź jeszcze raz wszystkie swoje odpowiedzi, a następnie wyślij je do nas, klikając w poniższy przycisk:<br/><br/>
-<input type="submit" value="Wyślij moje odpowiedzi" style="display: block; margin: auto;"/>
-<br/>
-<span class="wtem_spinner">
- <span>Wysyłanie rozwiązań w toku...</span>
- <img src="{% static 'wtem/spinner.gif' %}"/>
- <span>Spróbuj jeszcze raz jeśli wysyłanie trwa dłużej niż kilka minut.</span>
-</span>
-</p>
-
-<div class="wtem-fixed-info" style="margin-top:15px;">Rozwiązania można wysyłać do godziny {{end_time|default:"18.00"}}. <strong>Nie czekaj na ostatnią chwilę!</strong></div>
-
-</form>
-
-{% endblock %}
\ No newline at end of file
+++ /dev/null
-{% extends 'base_super.html' %}
-
-{% block body %}
-
-<h1>Wielki Turniej Edukacji Medialnej</h1>
-
-<p>Pierszy etap Turnieju został zakończony.</p>
-
-{% endblock %}
\ No newline at end of file
+++ /dev/null
-{% extends 'base_super.html' %}
-
-{% block body %}
-
-<h1>Wielki Turniej Edukacji Medialnej</h1>
-
-<p>Pierwszy etap: 18 listopada, 16:30. Czas trwania: ok. 90 minut.</p>
-
-{% endblock %}
\ No newline at end of file
+++ /dev/null
-{% 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. 36 pkt.
-
-Dziękujemy za udział w zawodach!
-
-Z pozdrowieniami,
-
-Zespół Edukacji Medialnej
-Fundacja Nowoczesna Polska
+++ /dev/null
-{% 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 w styczniu 2015 r. Zostaniesz o tym poinformowany drogą mailową.
-
-Dziękujemy za udział w zawodach!
-
-Z pozdrowieniami,
-
-Zespół Edukacji Medialnej
-Fundacja Nowoczesna Polska
+++ /dev/null
-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. 36 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
+++ /dev/null
-{% extends 'base_super.html' %}
-
-{% block body %}
-
-<h1>Twoje rozwiązania zostały wysłane</h1>
-
-<p>Dziękujemy za udział w I etapie Wielkiego Turnieju Edukacji Medialnej.
-Twoja praca została wysłana i poprawnie przyjęta przez system.</p>
-
-<p>Jeśli chcesz zmienić którąś z odpowiedzi, do godz. {{end_time|default:"18.00"}} możesz ponownie wysłać rozwiązanie zadań, korzystając z przypisanego Ci linku. W ocenie weźmiemy pod uwagę tylko ostatnie zgłoszenie. Pamiętaj, w zależności od zachowania Twojej przeglądarki, po powrocie do strony z zadaniami część zadań możesz być zmuszony/zmuszona rozwiązać ponownie.</p>
-
-<p>Do końca grudnia otrzymasz e-mail z wynikami I etapu. Informacja o uzyskanych przez Ciebie punktach zostanie również przesłana do osoby, która zgłosiła Twój udział w Turnieju.</p>
-
-<p>Aktualności związane z Turniejem możesz sprawdzać na stronie <a href="/wtem">http://edukacjamedialna.edu.pl/wtem</a>. W razie dodatkowych pytań możesz kontaktować się z nami pod adresem edukacjamedialna@nowoczesnapolska.org.pl lub numerem telefonu +48 22 621-30-17.</p>
-
-<p>Zespół Edukacji Medialnej
-Fundacja Nowoczesna Polska</p>
-
-{% endblock %}
\ No newline at end of file
{% extends "base.html" %}
-{% block title %}Wielki Turniej Edukacji Medialnej{% endblock %}
+{% block title %}{% include "wtem/title.html" %}{% endblock %}
{% block body %}
- <h1>Wielki Turniej Edukacji Medialnej</h1>
+ <h1>{% include "wtem/title.html" %}</h1>
{% block contact_form_description %}
<p class="notice">Rejestracja uczestników została zamknięta.</p>
-Droga Trenerko/Drogi Trenerze,
-
-Poniżej znajduje się wygenerowany specjalnie dla Ciebie link, pod którym będziesz mógł/mogła rozwiązać zadania egzaminacyjne TEM.
-Pamiętaj, że egzamin rozpocznie się dziś, 16 listopada o godz. 16.00. Na rozwiązanie zadań masz dokładnie tydzień.
-W razie dodatkowych pytań skontaktuj się z koordynatorką projektu, Dorotą Górecką dorotagorecka@nowoczesnapolska.org.pl.
+Poniżej znajduje się wygenerowany specjalnie dla Ciebie link, pod którym będziesz mógł/mogła rozwiązać zadania drugiego etapu Wielkiego Turnieju Edukacji Medialnej:
https://edukacjamedialna.edu.pl{% url 'wtem_form' key=submission.key %}
+Drugi etap Turnieju odbędzie się w poniedziałek 29 lutego o godz. 17:00. Na rozwiązanie testu będziesz mieć ok. 90 min. Aby rozwiązać test, potrzebny Ci będzie komputer ze stabilnym łączem internetowym oraz zainstalowaną i zaktualizowaną przeglądarką.
+
+Każdy uczestnik otrzymał indywidualny link, pod którym może rozwiązywać zadania samodzielnie. Wszelkie działania mogące świadczyć o tym, że uczestnik nie rozwiązuje testu samodzielnie, np. wchodzenie na stronę z zadaniami przez więcej niż jedną osobę, będą przez nas śledzone i poskutkują dyskwalifikacją.
+
+W razie dodatkowych pytań możesz kontaktować się z nami pod adresem edukacjamedialna@nowoczesnapolska.org.pl lub numerem telefonu +48 22 465 15 35.
+
+Przypominamy, że główną nagrodą w Turnieju jest indeks Collegium Civitas na dowolny kierunek studiów licencjackich oraz zwolnienie z opłat czesnego przez rok.
+
Powodzenia!
Zespół Edukacji Medialnej
-Fundacja Nowoczesna Polska
-
+fundacja Nowoczesna Polska
\ No newline at end of file
Z pozdrowieniami
Zespół Edukacji Medialnej
-Fundacja Nowoczesna Polska
\ No newline at end of file
+fundacja Nowoczesna Polska
\ No newline at end of file
{% extends 'base_super.html' %}
{% block body %}
-<h1>Trenerzy Edukacji Medialnej - egzamin certyfikujący</h1>
+<h1>{% include "wtem/title.html" %}</h1>
<h2>Niepoprawny link</h2>
<p>Podany adres jest niepoprawny. Żeby móc rozwiązywać zadania, musisz przejść pod dokładnie ten sam adres, co podany w wysłanej do Ciebie wiadomości e-mail.</p>
{% extends 'base_super.html' %}
{% block body %}
-<h1>Trenerzy Edukacji Medialnej - egzamin certyfikujący</h1>
+<h1>{% include "wtem/title.html" %}</h1>
<h2>Niepoprawny link</h2>
<p>Podany adres jest niepoprawny. Żeby móc rozwiązywać zadania, musisz przejść pod dokładnie ten sam adres, co podany w wysłanej do Ciebie wiadomości e-mail. Jeśli masz z tym kłopot, skontaktuj się z nami pod adresem <a href="mailto:edukacjamedialna@nowoczesnapolska.org.pl">edukacjamedialna@nowoczesnapolska.org.pl</a>.</p>
</style>
-<h1>Trenerzy Edukacji Medialnej - egzamin certyfikujący</h1>
-<div class="wtem-fixed-info">Rozwiązania można wysyłać do 30 listopada, do godziny 16:00. <strong>Nie czekaj na ostatnią chwilę!</strong></div>
+<h1>{% include "wtem/title.html" %}</h1>
+<div class="wtem-fixed-info">Rozwiązania można wysyłać do godziny {{end_time|default:"18:30"}}. <strong>Nie czekaj na ostatnią chwilę!</strong></div>
+
+<p>Witamy w II etapie Wielkiego Turnieju Edukacji Medialnej. Na rozwiązanie zadań masz czas do godz. {{end_time|default:"18:30"}}. Test składa się z 21 pytań. Niektóre z nich mają charakter otwarty – pamiętaj, żeby zostawić sobie odpowiednią ilość czasu na ich rozwiązanie.</p>
+
+<p>Wszelkie aktualności dotyczące Turnieju możesz znaleźć na <a href="{% url "info" "turniej/" %}" target="_info">edukacjamedialna.edu.pl/info/turniej/</a>.</p>
<p>Powodzenia!<br/>
-Zespół Edukacji Medialnej, Fundacja Nowoczesna Polska</p>
+Zespół Edukacji Medialnej, fundacja Nowoczesna Polska</p>
<form method="post" enctype="multipart/form-data">
<span class="wtem_spinner">
<span>Wysyłanie rozwiązań w toku...</span>
<img src="{% static 'wtem/spinner.gif' %}"/>
- <span>Spróbuj jeszcze raz jeśli wysyłanie trwa dłużej niż kilka minut.</span>
+ <span>Spróbuj jeszcze raz, jeśli wysyłanie trwa dłużej niż kilka minut.</span>
</span>
</p>
-<div class="wtem-fixed-info" style="margin-top:15px;">Rozwiązania można wysyłać do 30 listopada, do godziny 16:00. <strong>Nie czekaj na ostatnią chwilę!</strong></div>
+<div class="wtem-fixed-info" style="margin-top:15px;">Rozwiązania można wysyłać do godziny {{end_time|default:"18.00"}}. <strong>Nie czekaj na ostatnią chwilę!</strong></div>
</form>
{% block body %}
-<h1>Trenerzy Edukacji Medialnej - egzamin certyfikujący</h1>
+<h1>{% include "wtem/title.html" %}</h1>
-<p>Egzamin został zakończony.</p>
+<p>Drugi etap Turnieju został zakończony.</p>
{% endblock %}
{% block body %}
-<h1>Trenerzy Edukacji Medialnej - egzamin certyfikujący</h1>
+<h1>{% include "wtem/title.html" %}</h1>
-<p>Start: 16 listopada, 16:00. Czas trwania: tydzień.</p>
+<p>Drugi etap: 29 lutego, 17:00. Czas trwania: ok. 90 minut.</p>
{% endblock %}
<h1>Twoje rozwiązania zostały wysłane</h1>
-<p>Dziękujemy za udział w egzaminie certyfikującym Trenerów Edukacji Medialnej.
+<p>Dziękujemy za udział w II etapie Wielkiego Turnieju Edukacji Medialnej.
Twoja praca została wysłana i poprawnie przyjęta przez system.</p>
-<p>Jeśli chcesz zmienić którąś z odpowiedzi, do 23 listopada do godz. 16:00 możesz ponownie wysłać rozwiązanie zadań, korzystając z przypisanego Ci linku. W ocenie weźmiemy pod uwagę tylko ostatnie zgłoszenie. Pamiętaj, w zależności od zachowania Twojej przeglądarki, po powrocie do strony z zadaniami część zadań możesz być zmuszony/zmuszona rozwiązać ponownie.</p>
+<p>Jeśli chcesz zmienić którąś z odpowiedzi, do godz. {{end_time|default:"18:30"}} możesz ponownie wysłać rozwiązanie zadań, korzystając z przypisanego Ci linku. W ocenie weźmiemy pod uwagę tylko ostatnie zgłoszenie. Pamiętaj, w zależności od zachowania Twojej przeglądarki, po powrocie do strony z zadaniami część zadań możesz być zmuszony/zmuszona rozwiązać ponownie.</p>
+
+<p>Do 18 marca otrzymasz e-mail z wynikami II etapu. Informacja o uzyskanych przez Ciebie punktach zostanie również przesłana do osoby, która zgłosiła Twój udział w Turnieju.</p>
+
+<p>Aktualności związane z Turniejem możesz sprawdzać na stronie <a href="{% url "info" "turniej/" %}">{% url "info" "turniej/" %}</a>. W razie dodatkowych pytań możesz kontaktować się z nami pod adresem edukacjamedialna@nowoczesnapolska.org.pl lub numerem telefonu +48 22 465 15 35.</p>
<p>Zespół Edukacji Medialnej
-Fundacja Nowoczesna Polska</p>
+fundacja Nowoczesna Polska</p>
-{% endblock %}
+{% endblock %}
\ No newline at end of file
--- /dev/null
+Wielki Turniej Edukacji Medialnej
\ No newline at end of file
+# -*- coding: utf-8 -*-
from django.conf.urls import patterns, url
-from django.conf import settings
from .views import form, form_during
urlpatterns = patterns('',
url(r'^_test/(?P<key>.*)/$', form_during),
- url(r'^(?P<key>.*)/$', form, name = 'wtem_form')
+ url(r'^(?P<key>.*)/$', form, name='wtem_form')
)
-import os
+# -*- coding: utf-8 -*-
-from django.shortcuts import render
-from django.utils import simplejson
from django.conf import settings
-from django.http import Http404, HttpResponseForbidden
+from django.http import HttpResponseForbidden
+from django.shortcuts import render
from django.views.decorators.cache import never_cache
from django.views.decorators.csrf import csrf_exempt
-from .models import Submission, DEBUG_KEY, exercises
from .forms import WTEMForm
+from .models import Submission, DEBUG_KEY, exercises
WTEM_CONTEST_STAGE = getattr(settings, 'WTEM_CONTEST_STAGE', 'before')
@csrf_exempt
def form(request, key):
return globals()['form_' + WTEM_CONTEST_STAGE](request, key)
-
+
+
def form_before(request, key):
try:
- submission = Submission.objects.get(key = key)
- except:
+ Submission.objects.get(key=key)
+ except Submission.DoesNotExist:
return render(request, 'wtem/key_not_found_before.html')
else:
return render(request, 'wtem/main_before.html')
+
def form_after(request, key):
return render(request, 'wtem/main_after.html')
+
@never_cache
@csrf_exempt
def form_during(request, key):
return HttpResponseForbidden('Not allowed')
try:
- submission = Submission.objects.get(key = key)
+ submission = Submission.objects.get(key=key)
except Submission.DoesNotExist:
if settings.DEBUG and key == DEBUG_KEY:
- submission = Submission.create(first_name = 'Debug', last_name = 'Debug', email = 'debug@debug.com', key = DEBUG_KEY)
+ submission = Submission.create(
+ first_name='Debug', last_name='Debug', email='debug@debug.com', key=DEBUG_KEY)
else:
return render(request, 'wtem/key_not_found.html')
if request.method == 'GET':
- return render(request, 'wtem/main.html', dict(exercises = exercises, end_time = submission.end_time))
+ return render(request, 'wtem/main.html', dict(exercises=exercises, end_time=submission.end_time))
elif request.method == 'POST':
- form = WTEMForm(request.POST, request.FILES, instance = submission)
+ form = WTEMForm(request.POST, request.FILES, instance=submission)
if form.is_valid():
form.save()
- return render(request, 'wtem/thanks.html', dict(end_time = submission.end_time))
+ return render(request, 'wtem/thanks.html', dict(end_time=submission.end_time))
else:
raise Exception