1 # -*- coding: utf-8 -*-
2 from django import forms
3 from django.forms.formsets import BaseFormSet
4 from django.utils.safestring import mark_safe
6 from contact.forms import ContactForm
7 from django.core.mail import send_mail
8 from django.core.exceptions import ValidationError
9 from django.core.validators import validate_email
10 from django.template.loader import render_to_string
11 from django.utils.translation import ugettext_lazy as _
16 u'kujawsko-pomorskie',
28 u'warmińsko-mazurskie',
30 u'zachodniopomorskie',
33 WOJEWODZTWO_CHOICES = [(u'', u'(wybierz)')] + [(w, w) for w in WOJEWODZTWA]
36 class RegistrationForm(ContactForm):
38 form_title = u"Zgłoś sugestię"
39 admin_list = ['podpis', 'contact', 'temat']
41 contact = forms.EmailField(label=u'E-mail', max_length=128, required=False)
42 podpis = forms.CharField(label=u'Podpis', max_length=128, required=False)
43 temat = forms.CharField(label=u'Temat zgłoszenia', max_length=255)
44 tresc = forms.CharField(label=u'Treść', widget=forms.Textarea, max_length=1800)
47 class CooperateForm(ContactForm):
48 form_tag = 'wspolpraca'
49 form_title = u"Bądź z nami w kontakcie"
50 admin_list = ['podpis', 'contact']
52 podpis = forms.CharField(label=u'Imię i nazwisko', max_length=128)
53 contact = forms.EmailField(label=u'E-mail', max_length=128)
54 instytucja = forms.CharField(
55 label=u'Instytucja (nazwa, adres)', widget=forms.Textarea, max_length=1000, required=False)
56 uwagi = forms.CharField(label=u'Uwagi', widget=forms.Textarea, max_length=1800, required=False)
58 zajecia_przedszkole = forms.BooleanField(label=u'Prowadzę zajęcia z dziećmi w wieku przedszkolnym', required=False)
59 zajecia_sp13 = forms.BooleanField(label=u'Prowadzę zajęcia z dziećmi z SP kl. 1-3', required=False)
60 zajecia_sp46 = forms.BooleanField(label=u'Prowadzę zajęcia z dziećmi z SP kl. 4-6', required=False)
61 zajecia_gimnazjum = forms.BooleanField(label=u'Prowadzę zajęcia z młodzieżą w wieku gimnazjalnym', required=False)
62 zajecia_ponadgimnazjalne = forms.BooleanField(
63 label=u'Prowadzę zajęcia z młodzieżą ze szkół ponadgimnazjalnych', required=False)
64 zajecia_wyzsze = forms.BooleanField(label=u'Prowadzę zajęcia w szkole wyższej', required=False)
65 zajecia_dorosli = forms.BooleanField(label=u'Prowadzę zajęcia dla dorosłych', required=False)
66 zajecia_seniorzy = forms.BooleanField(label=u'Prowadzę zajęcia dla seniorów', required=False)
67 zgoda_dane = forms.BooleanField(
68 label=u'Oświadczam, że wyrażam zgodę na przetwarzanie moich danych osobowych zawartych '
69 u'w niniejszym formularzu zgłoszeniowym przez Fundację Nowoczesna Polska '
70 u'(administratora danych) z siedzibą w Warszawie (00-514) przy ul. Marszałkowskiej 84/92 '
71 u'lok. 125 w celu otrzymywania newslettera Edukacja medialna. Jednocześnie oświadczam, '
72 u'że zostałam/em poinformowana/y o tym, że mam prawo wglądu w treść swoich danych '
73 u'i możliwość ich poprawiania oraz że ich podanie jest dobrowolne, ale niezbędne '
74 u'do dokonania zgłoszenia.')
77 class ContestForm(ContactForm):
79 form_title = u"Zgłoś się do konkursu"
80 admin_list = ['nazwisko', 'instytucja', 'tytul']
82 nazwisko = forms.CharField(label=u'Imię i nazwisko', max_length=128)
83 contact = forms.EmailField(label=u'Adres e-mail', max_length=128)
84 instytucja = forms.CharField(label=u'Instytucja (nazwa, adres)', widget=forms.Textarea, max_length=1000)
85 tytul = forms.CharField(
86 label=u'Tytuł przeprowadzonej lekcji',
87 help_text=u'proszę wymienić wszystkie, jeśli zostały przeprowadzone więcej niż jedne zajęcia',
88 widget=forms.Textarea, max_length=1000)
89 uczestnicy = forms.CharField(label=u'Liczba uczestników', max_length=64)
90 trudnosci = forms.CharField(
91 label=u'Czy w trakcie zajęć pojawiły się jakieś trudności? Jeśli tak, to jakie?',
92 widget=forms.Textarea, max_length=2000)
93 pomocne = forms.CharField(
94 label=u'Co w materiałach okazało się najbardziej pomocne w przygotowaniu i prowadzeniu lekcji?',
95 widget=forms.Textarea, max_length=2000)
96 nieprzydatne = forms.CharField(
97 label=u'Co w materiałach okazało się nieprzydatne w przygotowaniu i prowadzeniu lekcji?',
98 widget=forms.Textarea, max_length=2000)
99 poprawic = forms.CharField(
100 label=u'Jak możemy poprawić serwis edukacjamedialna.edu.pl?',
101 widget=forms.Textarea, max_length=2000, required=False)
102 inne = forms.CharField(label=u'Inne uwagi i komentarze', widget=forms.Textarea, max_length=2000, required=False)
103 zgoda_regulamin = forms.BooleanField(
104 label=u'Znam i akceptuję regulamin konkursu Medialog.',
105 help_text=u'Zobacz <a href="/media/chunks/attachment/Regulamin_konkursu_MediaLog_1.pdf">'
106 u'regulamin konkursu MediaLog</a>.')
107 zgoda_informacje = forms.BooleanField(
108 label=u'Wyrażam zgodę na otrzymywanie informacji od Fundacji Nowoczesna Polska związanych z edukacją medialną.',
113 class UdzialForm(ContactForm):
115 form_title = u"Udział"
116 admin_list = ['nazwisko', 'miejscowosc', 'instytucja']
118 nazwisko = forms.CharField(label=u'Imię i nazwisko', max_length=128)
119 miejscowosc = forms.CharField(label=u'Miejscowość', max_length=128)
120 instytucja = forms.CharField(label=u'Nazwa organizacji/instytucji', max_length=128)
121 contact = forms.EmailField(label=u'Adres e-mail', max_length=128)
122 telefon = forms.CharField(label=u'Telefon', max_length=32)
123 uczestnicy = forms.IntegerField(label=u'Przewidywana liczba uczestników zajęć')
126 class WTEMStudentForm(forms.Form):
127 first_name = forms.CharField(label=u'Imię', max_length=128)
128 last_name = forms.CharField(label=u'Nazwisko', max_length=128)
129 email = forms.EmailField(label=u'Adres e-mail', max_length=128)
133 class NonEmptyBaseFormSet(BaseFormSet):
135 Won't allow formset_factory to be submitted with no forms
138 for form in self.forms:
139 if form.cleaned_data:
141 forms.ValidationError(u"Proszę podać dane przynajmniej jednej osoby.")
144 class WTEMForm(ContactForm):
146 disabled_template = 'wtem/disabled_contact_form.html'
148 form_title = u"WTEM - rejestracja uczestników"
149 submit_label = u"Wyślij zgłoszenie"
150 admin_list = ['imie', 'nazwisko', 'institution']
152 'student': forms.formsets.formset_factory(
153 WTEMStudentForm, formset=NonEmptyBaseFormSet, max_num=5, validate_max=True, extra=5),
156 contact = forms.EmailField(label=u'Adres e-mail opiekuna/opiekunki', max_length=128)
157 imie = forms.CharField(label=u'Imię', max_length=128)
158 nazwisko = forms.CharField(label=u'Nazwisko', max_length=128)
159 function = forms.CharField(label=u'Pełniona funkcja', max_length=255)
160 institution = forms.CharField(label=u'Nazwa instytucji', max_length=255)
161 institution_address = forms.CharField(label=u'Adres instytucji', widget=forms.Textarea, max_length=1000)
162 institution_email = forms.EmailField(label=u'Adres e-mail instytucji', max_length=128)
163 institution_phone = forms.CharField(label=u'Telefon do instytucji', max_length=32)
164 institution_www = forms.URLField(label=u'Strona WWW instytucji', max_length=255, required=False)
166 zgoda_regulamin = forms.BooleanField(
167 label=u'Znam i akceptuję regulamin Wielkiego Turnieju Edukacji Medialnej.',
168 help_text=u'Zobacz <a href="/media/chunks/attachment/regulamin_III_edycja.pdf">'
169 u'regulamin Wielkiego Turnieju Edukacji Medialnej</a>.'
171 zgoda_dane = forms.BooleanField(
172 label=u'Wyrażam zgodę na przetwarzanie moich danych osobowych oraz danych osobowych moich podopiecznych.',
173 # help_text=u'Zobacz <a href="/media/chunks/attachment/Oswiadczenie_o_danych_osobowych.pdf">'
174 # 'pełną treść oświadczenia</a>.'
177 potw_uczniowie = forms.BooleanField(
178 label=u'Potwierdzam, że zgłoszeni Uczestnicy/Uczestniczki w chwili rejestracji są '
179 u'uczniami/uczennicami szkoły ponadgimnazjalnej.',
181 zgoda_informacje = forms.BooleanField(
182 label=u'Wyrażam zgodę na otrzymywanie informacji od Fundacji Nowoczesna Polska '
183 u'związanych z edukacją medialną.',
187 extract_types = (dict(slug='extended', label=_('extended')),)
190 def get_extract_fields(contact, extract_type_slug):
191 fields = contact.body.keys()
192 fields.pop(fields.index('student'))
193 fields.extend(['contact', 'student_first_name', 'student_last_name', 'student_email'])
197 def get_extract_records(keys, contact, extract_type_slug):
199 for field_name in keys:
200 if field_name.startswith('student_'):
202 if field_name == 'contact':
203 val = contact.contact
205 val = contact.body[field_name]
206 toret[0][field_name] = val
209 for student in contact.body['student']:
210 for attr in ('first_name', 'last_name', 'email'):
211 current['student_' + attr] = student[attr]
212 if current not in toret:
213 toret.append(current)
217 def save(self, request, formsets=None):
218 contact = super(WTEMForm, self).save(request, formsets)
220 mail_subject = render_to_string('contact/wtem/student_mail_subject.html').strip()
221 mail_body = render_to_string('contact/wtem/student_mail_body.html')
222 for formset in formsets or []:
223 for f in formset.forms:
224 email = f.cleaned_data.get('email', None)
226 validate_email(email)
227 except ValidationError:
230 send_mail(mail_subject, mail_body, 'edukacjamedialna@nowoczesnapolska.org.pl', [email],
236 class CommissionForm(forms.Form):
237 name = forms.CharField(label=u'Imię i nazwisko Członka Komisji', max_length=128)
238 form_tag = "commission"
241 class OlimpiadaForm(ContactForm):
243 disabled_template = 'wtem/disabled_contact_form.html'
244 form_tag = "olimpiada"
245 form_title = u"Olimpiada Cyfrowa - Elektroniczny System Zgłoszeń"
246 submit_label = u"Wyślij zgłoszenie"
247 admin_list = ['nazwisko', 'school']
249 'student': forms.formsets.formset_factory(WTEMStudentForm, formset=NonEmptyBaseFormSet),
250 'commission': forms.formsets.formset_factory(CommissionForm, formset=BaseFormSet),
253 contact = forms.EmailField(label=u'Adres e-mail Przewodniczącego/Przewodniczącej', max_length=128)
254 przewodniczacy = forms.CharField(label=u'Imię i nazwisko Przewodniczącego/Przewodniczącej', max_length=128)
255 school = forms.CharField(label=u'Nazwa szkoły', max_length=255)
256 school_address = forms.CharField(label=u'Adres szkoły', widget=forms.Textarea, max_length=1000)
257 school_email = forms.EmailField(label=u'Adres e-mail szkoły', max_length=128)
258 school_phone = forms.CharField(label=u'Numer telefonu szkoły', max_length=32)
259 school_www = forms.URLField(label=u'Strona WWW szkoły', max_length=255, required=False)
261 zgoda_regulamin = forms.BooleanField(
262 label=u'Znam i akceptuję Regulamin Olimpiady Cyfrowej.',
263 help_text=u'Zobacz <a href="https://olimpiadacyfrowa.pl/regulamin/" target="_blank">'
264 u'regulamin Olimpiady Cyfrowej</a>.'
266 zgoda_dane = forms.BooleanField(
267 label=u'Oświadczam, że wyrażam zgodę na przetwarzanie danych osobowych zawartych w niniejszym formularzu '
268 u'zgłoszeniowym przez Fundację Nowoczesna Polska (administratora danych) z siedzibą w Warszawie (00-514) '
269 u'przy ul. Marszałkowskiej 84/92 lok. 125 na potrzeby organizacji Olimpiady Cyfrowej. Jednocześnie '
270 u'oświadczam, że zostałam/em poinformowana/y o tym, że mam prawo wglądu w treść swoich danych '
271 u'i możliwość ich poprawiania oraz że ich podanie jest dobrowolne, ale niezbędne do dokonania '
274 extract_types = (dict(slug='extended', label=_('extended')),)
277 def get_extract_fields(contact, extract_type_slug):
278 fields = contact.body.keys()
279 if 'student' in fields:
280 fields.remove('student')
281 fields.extend(['contact', 'student_first_name', 'student_last_name', 'student_email'])
285 def get_extract_records(keys, contact, extract_type_slug):
287 for field_name in keys:
288 if field_name.startswith('student_'):
290 if field_name == 'contact':
291 val = contact.contact
293 val = contact.body[field_name]
294 toret[0][field_name] = val
297 if 'student' in contact.body:
298 for student in contact.body['student']:
299 for attr in ('first_name', 'last_name', 'email'):
300 current['student_' + attr] = student[attr]
301 if current not in toret:
302 toret.append(current)
306 def save(self, request, formsets=None):
307 contact = super(OlimpiadaForm, self).save(request, formsets)
309 mail_subject = render_to_string('contact/olimpiada/student_mail_subject.html').strip()
310 mail_body = render_to_string('contact/olimpiada/student_mail_body.html')
311 for formset in formsets or []:
312 if formset.prefix == 'student':
313 for f in formset.forms:
314 email = f.cleaned_data.get('email', None)
316 validate_email(email)
317 except ValidationError:
320 send_mail(mail_subject, mail_body, 'edukacjamedialna@nowoczesnapolska.org.pl', [email],
326 class MILForm(ContactForm):
328 form_title = _('Share your thoughts on the "Media and information literacy competencies catalogue"')
329 submit_label = _('Submit')
330 base_template = 'base_mil.html'
331 site_name = site_domain = 'katalog.nowoczesnapolska.org.pl'
333 name = forms.CharField(label=_('Name and Surname'), max_length=255)
334 contact = forms.EmailField(label=_('E-mail'), max_length=255)
336 institution = forms.CharField(label=_('Institution'), widget=forms.Textarea, max_length=8192)
338 question_stages = forms.CharField(
339 label=_('What do you think about the proposed educational stages classification?'),
340 widget=forms.Textarea,
344 question_fields = forms.CharField(
345 label=_('What do you think about the proposed thematic fields?'),
346 widget=forms.Textarea,
350 question_left_out = forms.CharField(
351 label=_('What important areas of media and information literacy have been left out?'),
352 widget=forms.Textarea,
356 other = forms.CharField(
357 label=_('Other suggestions and comments'),
358 widget=forms.Textarea,
363 class TEMForm(ContactForm):
365 form_title = u"TEM - szkolenie dla trenerów edukacji medialnej"
366 admin_list = ['imie', 'nazwisko', 'instytucja', 'contact']
368 imie = forms.CharField(label=u'Imię', max_length=128)
369 nazwisko = forms.CharField(label=u'Nazwisko', max_length=128)
370 contact = forms.EmailField(label=u'E-mail', max_length=128)
371 telefon = forms.CharField(label=u'Tel. kontaktowy', max_length=128)
372 instytucja = forms.CharField(label=u'Instytucja', max_length=256)
373 adres = forms.CharField(label=u'Adres', widget=forms.Textarea, max_length=1000)
374 stanowisko = forms.CharField(label=u'Stanowisko', max_length=256)
375 doswiadczenie = forms.CharField(
376 label=u'Jakie jest Pani/Pana doświadczenie w zakresie edukacji medialnej?',
377 widget=forms.Textarea, max_length=500, help_text=u'(max 500 znaków)')
378 dlaczego = forms.CharField(
379 label=u'Dlaczego chce Pani/Pan wziąć udział w szkoleniu?',
380 widget=forms.Textarea, max_length=500, help_text=u'(max 500 znaków)')
381 jak_wykorzystac = forms.CharField(
382 label=u'Jak zamierza Pan/Pani wykorzystać wiedzę zdobytą w czasie szkolenia?',
383 widget=forms.Textarea, max_length=500, help_text=u'(max 500 znaków)')
385 zajecia = forms.BooleanField(
386 label=u'W okresie wrzesień-październik 2015 r. przeprowadzę min. 2 godziny zajęć edukacji medialnej '
387 u'z wybraną grupą dzieci lub młodzieży.', required=True)
388 zgoda_informacje = forms.BooleanField(
389 label=u'Wyrażam zgodę na otrzymywanie informacji od Fundacji Nowoczesna Polska '
390 u'związanych z edukacją medialną.', required=False)
393 class SuperwizjaForm(ContactForm):
394 form_tag = 'superwizja'
395 form_title = u"Informacje o zajęciach"
396 admin_list = ['nazwisko', 'contact', 'skype', 'temat']
397 submit_label = u'Wyślij'
399 nazwisko = forms.CharField(label=u'Imię i nazwisko', max_length=1024)
400 contact = forms.CharField(label=u'E-mail kontaktowy', required=False)
401 skype = forms.CharField(label=u'Nazwa użytkownika Skype', max_length=255)
402 temat = forms.CharField(label=u'Temat zajęć', max_length=1024)
403 termin = forms.CharField(label=u'Termin zajęć', max_length=1024)
404 czas_trwania = forms.CharField(label=u'Czas trwania zajęć', max_length=1024)
405 miejsce = forms.CharField(label=u'Miejsce prowadzenia zajęć', max_length=1024)
406 rodzaj = forms.ChoiceField(
407 label=u'Rodzaj zajęć', widget=forms.RadioSelect,
408 choices=[('jednorazowe', 'jednorazowe'), ('w ramach cyklu', 'w ramach cyklu')])
409 cykl = forms.CharField(label=u'Jeśli w ramach cyklu, to podaj jego temat i czas trwania', required=False)
410 sposob = forms.ChoiceField(
411 label=u'Sposób prowadzenia zajęć', widget=forms.RadioSelect,
412 choices=[('samodzielnie', 'samodzielnie'), (u'z drugą osobą', 'z drugą osobą')])
413 wrazenia = forms.CharField(
414 label=u'Opisz Twoje ogólne wrażenia po warsztacie.', widget=forms.Textarea, max_length=4096)
415 opiekun = forms.CharField(
416 label=u'Czy opiekun grupy był obecny podczas zajęć? Jeśli tak, opisz krótko jego rolę.',
417 widget=forms.Textarea, max_length=4096)
418 grupa = forms.CharField(
419 label=u'Opisz krótko grupę uczestników zajęć (wiek, liczba osób, czy to pierwszy kontakt z grupą).',
420 widget=forms.Textarea, max_length=4096)
421 cel = forms.CharField(
422 label=u'Jaki był założony cel zajęć? Dlaczego wybrałaś/eś taki cel?', widget=forms.Textarea, max_length=4096)
423 ewaluacja = forms.CharField(
424 label=u'W jaki sposób sprawdziłeś/aś, czy cel zajęć został zrealizowany? Opisz krótko efekty zajęć.',
425 widget=forms.Textarea, max_length=4096)
427 przygotowania = forms.CharField(
428 label=u'Opisz w punktach proces przygotowania się do zajęć.', widget=forms.Textarea, max_length=4096)
429 przygotowania_trudnosci = forms.CharField(
430 label=u'Co na etapie przygotowań sprawiło Ci największą trudność?', widget=forms.Textarea, max_length=4096)
431 przygotowania_pomoc = forms.CharField(
432 label=u'Co było pomocne w przygotowaniu zajęć? '
433 u'(Czy korzystałaś/eś z materiałów z serwisu edukacjamedialna.edu.pl? Jeśli tak, to jakich?)',
434 widget=forms.Textarea, max_length=4096)
435 narzedzia = forms.CharField(
436 label=u'Jakie narzędzie/a planowałaś/eś wykorzystać, a jakie wykorzystałaś/eś?',
437 widget=forms.Textarea, max_length=4096)
438 struktura = forms.CharField(
439 label=u'Opisz w punktach strukturę zajęć. '
440 u'Zaznacz ile czasu planowałaś/eś na każdą część, a ile czasu faktycznie Ci to zajęło.',
441 widget=forms.Textarea, max_length=4096)
442 prowadzenie_trudnosci = forms.CharField(
443 label=u'Co sprawiało Ci trudność w prowadzeniu zajęć?', widget=forms.Textarea, max_length=4096)
444 prowadzenie_pomoc = forms.CharField(
445 label=u'Co było pomocne w prowadzeniu zajęć?', widget=forms.Textarea, max_length=4096)
446 kontrakt = forms.CharField(
447 label=u'W jakiej formie został zawarty kontrakt z uczestnikami? Jakie zasady zostały przyjęte? '
448 u'Czy w trakcie zajęć Ty bądź uczestnicy odwoływaliście się do kontraktu?',
449 widget=forms.Textarea, max_length=4096)
450 trudne_sytuacje = forms.CharField(
451 label=u'Czy podczas zajęć miały miejsce tzw. „trudne sytuacje”. '
452 u'Jak na nie zareagowałaś/eś? Czy potrzebowałabyś/łbyś czegoś w związku z nimi?',
453 widget=forms.Textarea, max_length=4096)
454 informacje_zwrotne = forms.CharField(
455 label=u'Czy zbierałaś/eś informacje zwrotne od uczestników? Jeśli tak, na co zwrócili uwagę? '
456 u'W jaki sposób zbierałaś/eś informacje zwrotne?', widget=forms.Textarea, max_length=4096)
458 mocne_strony = forms.CharField(
459 label=u'Opisz w punktach mocne strony przeprowadzonych zajęć.', widget=forms.Textarea, max_length=4096)
460 zmiany = forms.CharField(
461 label=u'Opisz w punktach, co byś zmienił(a) na przyszłość.', widget=forms.Textarea, max_length=4096)
462 potrzeby = forms.CharField(
463 label=u'Czy potrzebowałbyś/łbyś czegoś przed następnymi zajęciami?', widget=forms.Textarea, max_length=4096)
464 uwagi = forms.CharField(label=u'Inne uwagi', widget=forms.Textarea, max_length=4096, required=False)
467 def textarea_field(label, max_length=500):
468 return forms.CharField(
469 label=label, widget=forms.Textarea, max_length=max_length, help_text=u'(do %s znaków)' % max_length)
472 class CybernauciForm(ContactForm):
474 disabled_template = 'contact/disabled_contact_form.html'
475 form_tag = 'trenerzy-cybernauci2017'
476 form_title = u"Cybernauci – szkolenie dla trenerów"
477 admin_list = ['nazwisko', 'instytucja', 'contact']
478 submit_label = u'Wyślij'
480 nazwisko = forms.CharField(label=u'Imię i nazwisko', max_length=1024)
481 adres = forms.CharField(label=u'Adres zamieszkania')
482 wojewodztwo = forms.ChoiceField(label=u'Województwo', choices=WOJEWODZTWO_CHOICES)
483 contact = forms.CharField(label=u'Adres e-mail')
484 telefon = forms.CharField(label=u'Telefon kontaktowy', max_length=32)
485 dlaczego = textarea_field(
486 label=u'Proszę opisać, dlaczego chce Pan/Pani zostać Emisariuszem Bezpiecznego Internetu.')
487 grupy = forms.MultipleChoiceField(
488 label=u'Proszę wskazać, dla których grup realizował Pan/realizowała Pani zajęcia warsztatowe',
489 widget=forms.CheckboxSelectMultiple,
491 ('Uczniowie klas 1-3', 'Uczniowie klas 1-3'),
492 ('Uczniowie klas 4-6', 'Uczniowie klas 4-6'),
493 ('Uczniowie szkół gimnazjalnych', 'Uczniowie szkół gimnazjalnych'),
494 ('Uczniowie szkół ponadgimnazjalnych', 'Uczniowie szkół ponadgimnazjalnych'),
495 ('Nauczyciele', 'Nauczyciele'),
496 ('Rodzice', 'Rodzice'),
498 doswiadczenie_grupy = textarea_field(
499 label=u'Proszę opisać swoje doświadczenie w pracy warsztatowej z grupami docelowymi Projektu '
500 u'(dziećmi, młodzieżą, osobami dorosłymi: nauczycielami, rodzicami).',
502 doswiadczenie_edumed = textarea_field(
503 label=u'Jakie jest Pana/Pani doświadczenie w zakresie edukacji medialnej, '
504 u'zwłaszcza w zakresie bezpieczeństwa w Internecie i korzystania z TIK? '
505 u'Skąd czerpie Pan/Pani wiedzę w tym zakresie? W jakich projektach brał '
506 u'Pan/brała Pani udział dotychczas?',
508 szkolenia = textarea_field(
509 label=u'Proszę wymienić studia, szkolenia albo kursy (maks. 5 najważniejszych) '
510 u'powiązane z tematyką Projektu, w których Pan/Pani uczestniczył/ła, '
511 u'w tym dane na temat instytucji czy osoby prowadzącej (z JEDNOZDANIOWYM '
512 u'omówieniem i terminami, w których się odbyły).')
513 realizacje = textarea_field(
514 label=u'Proszę opisać swoje doświadczenie w zakresie realizacji działań w lokalnym środowisku '
515 u'szkolnym (np. na terenie gminy/powiatu/województwa).')
516 cel = textarea_field(
517 label=u'Proszę opisać, jaką wiedzę i umiejętności chce Pan/Pani zdobyć '
518 u'lub doskonalić poprzez uczestnictwo w Szkoleniu trenerskim.')
519 skad = forms.CharField(label=u'Skąd dowiedział/dowiedziała się Pan/Pani o projekcie „Cybernauci”?')
520 zgoda_regulamin = forms.BooleanField(
521 label=u'Oświadczam, że zapoznałem/zapoznałam się z Regulaminem Rekrutacji '
522 u'i Uczestnictwa w Projekcie „Cybernauci – kompleksowy projekt '
523 u'kształtowania bezpiecznych zachowań w sieci” i akceptuję jego warunki.',
524 help_text=u'Zobacz <a href="https://cybernauci.edu.pl/wp-content/uploads/2017/04/'
525 u'regulamin_Cybernauci_szkolenie_trenerskie_2017.pdf">regulamin</a>.')
526 zgoda_dane = forms.BooleanField(
527 label=u'Wyrażam zgodę na przetwarzanie moich danych osobowych zawartych '
528 u'w niniejszym dokumencie dla potrzeb niezbędnych do realizacji Projektu '
529 u'„Cybernauci – kompleksowy projekt kształtowania bezpiecznych zachowań '
530 u'w sieci” zgodnie z ustawą z dnia 29.08.1997 roku o Ochronie Danych '
531 u'Osobowych (Dz. U. z 2002 r. Nr 101, poz. 926 z późniejszymi zmianami).')
532 zgoda_niekaralnosc = forms.BooleanField(
533 label=u'W przypadku zakwalifikowania się na kurs zobowiązuję się '
534 u'do dostarczenia świadectwa o niekaralności – najpóźniej w dniu rozpoczęcia Szkolenia.')
535 zgoda_newsletter = forms.BooleanField(
537 label=u'Chcę otrzymywać newsletter Edukacja Medialna.')
538 cv = forms.FileField(
539 label=u'Wgraj plik CV.',
540 help_text=u'Prosimy o nazwanie pliku swoim imieniem i nazwiskiem. Preferowany format: PDF.')
543 class WLEMForm(ContactForm):
546 form_title = u"WLEM - szkolenie dla warszawskich liderów edukacji medialnej"
547 admin_list = ['nazwisko', 'instytucja', 'contact']
548 submit_label = u'Wyślij'
550 nazwisko = forms.CharField(label=u'Imię i nazwisko', max_length=128)
551 contact = forms.CharField(label=u'Adres e-mail')
552 telefon = forms.CharField(label=u'Tel. kontaktowy', max_length=32)
553 instytucja = forms.CharField(label=u'Instytucja', max_length=128)
554 instytucja_adres = forms.CharField(label=u'Adres (instytucji)', max_length=1024)
555 stanowisko = forms.CharField(label=u'Stanowisko', max_length=256)
556 doswiadczenie = forms.CharField(
557 label=u'Jakie jest Pani/Pana doświadczenie w zakresie edukacji medialnej?',
558 widget=forms.Textarea, max_length=4096)
559 dlaczego = forms.CharField(
560 label=u'Dlaczego chce Pani/Pan wziąć udział w szkoleniu?',
561 widget=forms.Textarea, max_length=4096)
562 cel = forms.CharField(
563 label=u'Jaką wiedzę i umiejętności chce Pan/Pani zdobyć lub doskonalić poprzez uczestnictwo w szkoleniu?',
564 widget=forms.Textarea, max_length=4096)
565 jak_wykorzystac = forms.CharField(
566 label=u'Jak zamierza Pan/Pani wykorzystać wiedzę i umiejętności zdobyte w czasie szkolenia?',
567 widget=forms.Textarea, max_length=4096)
568 zgoda_zajecia = forms.BooleanField(
569 label=u'W okresie lipiec-październik 2016 r. przeprowadzę min. 2 godziny zajęć '
570 u'edukacji medialnej z grupą warszawiaków.')
571 zgoda_dane = forms.BooleanField(
572 label=u'Wyrażam zgodę na przetwarzanie moich danych osobowych zawartych '
573 u'w niniejszym dokumencie dla potrzeb niezbędnych do realizacji Projektu '
574 u'„Warszawscy Liderzy Edukacji Medialnej” zgodnie z ustawą z dnia 29.08.1997 '
575 u'roku o Ochronie Danych Osobowych (Dz. U. z 2002 r. Nr 101, poz. 926 '
576 u'z późniejszymi zmianami).')
577 zgoda_newsletter = forms.BooleanField(
579 label=u'Wyrażam zgodę na otrzymywanie informacji od Fundacji Nowoczesna Polska '
580 u'związanych z edukacją medialną.')
583 def ordered_textarea_field(start, pre_label=u'', label=u'', max_length=500):
584 return textarea_field(
585 mark_safe(u'%s<ol type="a" start="%s"><li>%s</li></ol>' % (pre_label, start, label)),
586 max_length=max_length)
589 def simple_choices(*choices):
590 return tuple((choice, choice) for choice in choices)
593 class CybernauciAnkietaForm(ContactForm):
594 def __init__(self, *args, **kwargs):
595 super(CybernauciAnkietaForm, self).__init__(*args, **kwargs)
596 self.label_suffix = ''
598 form_tag = 'cybernauci-ankieta-trenera'
599 form_title = u"Cybernauci – ankieta trenerska"
600 nazwisko = forms.CharField(label=u'Imię i nazwisko', max_length=128)
601 contact = forms.CharField(label=u'Adres e-mail')
602 pyt1a = ordered_textarea_field(
603 1, pre_label=u'1. W kontekście planowanego szkolenia jakie są Twoje oczekiwania w zakresie:',
604 label=u'przekazywanej wiedzy')
605 pyt1b = ordered_textarea_field(2, label=u'tematyki szkoleń z bezpieczeństwa w sieci')
606 pyt1c = ordered_textarea_field(3, label=u'materiałów dydaktycznych')
607 pyt1d = ordered_textarea_field(4, label=u'organizacji i prowadzenia szkoleń w projekcie')
608 pyt1e = ordered_textarea_field(5, label=u'umiejętności trenerskich')
609 pyt1f = ordered_textarea_field(6, label=u'inne, jakie?')
610 pyt2 = textarea_field(u'2. W których tematach z obszaru bezpieczeństwa w sieci czujesz się najpewniej? '
612 pyt3 = textarea_field(u'3. Które z tematów znasz słabej lub których nie znasz zupełnie?')
613 pyt4 = textarea_field(u'4. Jakie są Twoje mocne strony jako osoby prowadzącej warsztaty?')
614 pyt5 = textarea_field(u'5. Nad jakimi elementami pracy trenerskiej chciałbyś/chciałabyś popracować?')
615 pyt6 = textarea_field(u'6. Co jest dla Ciebie najważniejsze w pracy z grupą? '
616 u'Na co zwracasz uwagę w tym obszarze jako osoba prowadząca warsztaty?')
617 pyt7 = textarea_field(u'7. Opisz najtrudniejszą Twoim zdaniem sytuację, której doświadczyłeś/doświadczyłaś '
618 u'podczas prowadzenia zajęć w grupie z młodzieżą, rodzicami lub nauczycielami?')
619 pyt8 = forms.MultipleChoiceField(
620 label=u'8. W jaki sposób poradzisz sobie z niespodziewaną sytuacją skrócenia czasu zajęć? '
621 u'Na które z poniższych punktów przeznaczysz w takiej sytuacji najmniej czasu?',
622 widget=forms.CheckboxSelectMultiple,
623 choices=simple_choices(
624 u'Przedstawienie się prowadzących i uczestników',
625 u'Poznanie oczekiwań i dostosowanie do nich programu zajęć',
627 u'Poprowadzenie kolejnych elementów zajęć (teoria-ćwiczenia)',
628 u'Podsumowanie - sprawdzenie efektów warsztatu',
629 u'Zaplanowanie dalszych prac',
631 pyt8a = textarea_field(label=u'Dlaczego?', max_length=1000)
632 pyt9 = textarea_field(
633 label=u'9. Jeden z uczestników przeszkadza podczas warsztatów: '
634 u'głośno żartuje, nie wykonuje zleconych zadań. Co robisz?')
635 pyt10 = textarea_field(
636 u'10. Z całej grupy tylko trzy osoby odpowiadają na każde zadane przez Ciebie pytanie. '
638 pyt11 = textarea_field(
639 u'11. Jakie są Twoje największe obawy wobec realizacji szkoleń w placówkach oświatowych?')
640 pyt12a = ordered_textarea_field(
641 1, pre_label=u'12. Opisz szczegółowo doświadczenie z różnymi grupami:', label=u'rodzice')
642 pyt12b = ordered_textarea_field(2, label=u'nauczyciele')
643 pyt12c = ordered_textarea_field(3, label=u'młodzież ponadgimnazjalna')
644 pyt12d = ordered_textarea_field(4, label=u'młodzież gimnazjalna')
645 pyt12e = ordered_textarea_field(5, label=u'dzieci i młodzież szkół podstawowych')
646 pyt13 = textarea_field(
647 u'13. Z jakimi grupami wiekowymi najlepiej Ci się współpracuje? '
648 u'Umiejętności w zakresie pracy z którą grupą najbardziej chciałabyś/chciałbyś zdobyć/doskonalić?')
649 pyt14 = textarea_field(
650 u'14. W jaki sposób na co dzień dbasz o swój rozwój jako trenera/trenerki, '
651 u'osoby prowadzącej warsztaty czy inne formy szkoleniowe?')
654 class SciezkiKopernikaForm(ContactForm):
655 form_tag = 'sciezki-kopernika'
656 form_title = u'Formularz zgłoszeniowy na warsztaty'
658 nazwisko = forms.CharField(label=u'Imię i nazwisko uczestnika/uczestniczki', max_length=128)
659 rok_urodzenia = forms.IntegerField(label=u'Rok urodzenia')
660 adres_dom = forms.CharField(label=u'Adres zamieszkania – ulica i numer', max_length=128)
661 adres_poczta = forms.CharField(label=u'Adres zamieszkania – kod pocztowy i miejscowość', max_length=128)
662 contact = forms.EmailField(label=u'Adres e-mail')
663 szkola = forms.CharField(label=u'Nazwa szkoły', max_length=128)
664 adres_szkola = forms.CharField(label=u'Adres szkoły – ulica i numer', max_length=128)
665 poczta_szkola = forms.CharField(label=u'Adres szkoły – kod pocztowy i miejscowość', max_length=128)
666 opiekun = forms.CharField(label=u'Imię i nazwisko rodzica/opiekuna', max_length=128)
667 adres_opiekun = forms.CharField(label=u'Adres zamieszkania rodzica/opiekuna – ulica i numer', max_length=128)
668 poczta_opiekun = forms.CharField(
669 label=u'Adres zamieszkania rodzica/opiekuna – kod pocztowy i miejscowość', max_length=128)
670 telefon_opiekun = forms.CharField(label=u'Numer telefonu rodzica/opiekuna', max_length=32)
671 email_opiekun = forms.EmailField(label=u'Adres e-mail rodzica/opiekuna', max_length=32)
672 specjalne_potrzeby = forms.ChoiceField(
673 label=u'Czy uczestnik/uczestniczka ma specjalne potrzeby wynikające z niepełnosprawności', required=True,
674 choices=[('tak', 'tak'), ('nie', 'nie')], widget=forms.RadioSelect)
675 zgoda_regulamin = forms.BooleanField(
677 u'Oświadczam, że zapoznałem/-am się z <a href="/media/chunks/attachment/Regulamin.pdf">'
678 u'Regulaminem udziału w projekcie</a> '
679 u'i spełniam kryteria kwalifikowalności do udziału w projekcie.'))
682 def quiz_question(label, choices):
683 return forms.TypedChoiceField(label=label, choices=choices, coerce=int, widget=forms.RadioSelect)
686 def make_link(text, url):
687 return u'<a href="%s">%s</a>' % (url, text)
690 class SciezkiKopernikaTestForm(ContactForm):
691 def __init__(self, *args, **kwargs):
692 super(SciezkiKopernikaTestForm, self).__init__(*args, **kwargs)
693 self.label_suffix = ''
696 form_tag = 'sciezki-kopernika-test'
698 submit_label = u'Wyślij'
700 contact = forms.EmailField(label=u'Adres e-mail, na który przyślemy informację o wynikach')
701 pyt1 = quiz_question(
702 label=u'1) Na stronie portalu internetowego opublikowano wpis o treści '
703 u'„Nie wszyscy muzułmanie to terroryści, ale wszyscy terroryści to muzułmanie”. '
704 u'Komentarz podlega moderacji i powinien:',
706 (1, u'zostać zachowany, ponieważ jest prywatną opinią korzystającą z wolności słowa,'),
707 (0, u'zostać zachowany, ponieważ informuje o fakcie,'),
708 (2, u'zostać usunięty, ponieważ jest wprowadzającą w błąd interpretacją faktów.'),
710 pyt2 = quiz_question(
711 label=u'2) Aby przygotować podcast, należy posiadać przynajmniej:',
713 (0, u'półprofesjonalny mikrofon radiowy, z wbudowanym interfejsem dźwiękowym, '
714 u'komercyjne oprogramowanie typu DAW, średnio-zaawansowane umiejętności cyfrowej obróbki dźwięku,'),
715 (1, u'urządzenie do nagrywania dźwięku, laptop, oprogramowanie dedykowane do tworzenia podcastów,'),
716 (2, u'urządzenie do nagrywania dźwięku, podstawowe oprogramowanie do edycji dźwięku, '
717 u'podstawowe umiejętności cyfrowej obróbki dźwięku.')])
718 pyt3 = quiz_question(
719 label=u'3) Muzeum cyfrowe chce udostępnić skan XIV-wiecznego kodeksu. '
720 u'Zgodnym z ideą domeny publicznej sposobem jego udostępnienia będzie:',
722 (0, u'udostępnienie go na licencji Creative Commons,'),
723 (2, u'udostępnienie go bez licencji z czytelnym wskazaniem praw do dowolnego wykorzystania,'),
724 (1, u'udostępnienie go w pliku jakości produkcyjnej.')])
725 pyt4 = quiz_question(
726 label=u'4) Aby uniknąć możliwości podejrzenia przez niepowołane osoby, jakie strony internetowe '
727 u'odwiedzałeś ostatnio, powinieneś/powinnaś:',
729 (0, u'ustawić opcję otwierania nowej sesji przeglądarki bez wyświetlania ostatnio używanych kart '
730 u'oraz regularnie czyścić historię wyszukiwania,'),
731 (2, u'wylogowywać się lub blokować ekran za każdym razem, kiedy odchodzisz od komputera, tabletu '
732 u'lub odkładasz gdzieś telefon, regularnie czyścić dane zgromadzone przez przeglądarkę internetową,'),
733 (1, u'wylogowywać się lub blokować ekran za każdym razem, kiedy odchodzisz od komputera, tabletu '
734 u'lub odkładasz gdzieś telefon, regularnie czyścić historię przeglądanych stron.')])
735 pyt5 = quiz_question(
736 label=u'5) Komentarz opublikowany w internecie ma taką samą wartość bez względu na to, '
737 u'czy jest anonimowy czy podpisany imieniem i nazwiskiem:',
739 (0, u'tak, ze względu na zasadę wolności słowa,'),
740 (2, u'to zależy od jego treści i kontekstu, w którym go opublikowano,'),
741 (1, u'tak, z punktu widzenia odpowiedzialności prawnej. [poprawna]')])
742 pyt6 = quiz_question(
743 label=u'6) Wraz z grupą osób zamierzasz przygotować cyfrową opowieść (narrację) na temat współczesnych '
744 u'nastolatków i ich stosunku do szkoły. Żeby praca była efektywna, a jej rezultat efektowny, warto '
745 u'zorganizować wspólną pracę w następujących krokach:',
747 (2, u'przeprowadzić wspólną dyskusję odnośnie tematu opowieści, wybrać jeden, ustalić, co należy zrobić, '
748 u'podzielić zadania w grupie i przygotować scenariusz narracji (opisać poszczególne sceny, co się '
749 u'w nich znajdzie, co będzie potrzebne do ich przygotowania),'),
750 (0, u'zgromadzić jak najwięcej materiałów wideo i zdjęć, wybrać oprogramowanie do obróbki wideo i wspólnie '
751 u'decydować o kolejności scen i zawartości opowieści,'),
752 (1, u'wybrać temat opowieści, zgromadzić jak najwięcej filmików i zdjęć, podzielić się zadaniami w grupie, '
753 u'zmontować narrację z części przygotowanych przez uczestników zespołu.')])
754 pyt7 = quiz_question(
755 label=u'7) Firma telekomunikacyjna wykorzystuje boty do automatycznego odpowiadania na pytania klientów '
756 u'zadawane przez Facebooka. Boty zwracają się do wszystkich po imieniu. Kiedy użytkownik, który nie '
757 u'życzy sobie tego nie życzy, wyraża swoje niezadowolenie z takiej formy rozmowy, firma:',
759 (2, u'przeprosić użytkownika, szanując preferowane przez niego reguły komunikacji,'),
760 (0, u'zignorować użytkownika odwołując się do zasad netykiety,'),
761 (1, u'zareagować zgodnie z wypracowanymi wewnętrznie zasadami komunikacji.')])
762 pyt8 = quiz_question(
763 label=u'8) Jesteś członkiem/członkinią grupy, która przygotowuje aplikację, mającą ułatwić osobom '
764 u'niepełnosprawnym poruszanie się po Twojej miejscowości. Oprogramowanie będzie m.in. informować, '
765 u'czy przy określonej instytucji, firmie, sklepie, znajdują się miejsca parkingowe '
766 u'dla niepełnosprawnych i ile ich jest. Aby aplikacja działała prawidłowo, powinieneś/powinnaś:',
768 (1, u'przygotować listę najważniejszych obiektów w Twoim mieście i skontaktować się z ich administracją, '
769 u'pytając o liczbę miejsc parkingowych,'),
770 (0, u'poszukać informacji o dostępnych miejscach parkingowych na stronach instytucji, firm i sklepów,'),
771 (2, u'skontaktować się z administracją obiektów, o których będzie informować aplikacja, udać się również '
772 u'do tych obiektów, aby potwierdzić ilość dostępnych miejsc, spróbować zgromadzić informacje o tym, '
773 u'jak często miejsca parkingowe są zajmowane przez ludzi pełnosprawnych.')])
774 pyt9 = quiz_question(
775 label=u'9) Pojęcie „niewidzialnej pracy” może dotyczyć:',
777 (2, u'moderatorów mediów społecznościowych zatrudnianych w krajach o niskich kosztach pracy, [najlepsze]'),
778 (1, u'użytkowników serwisów społecznościowych publikujących codziennie i bez wynagrodzenia własne '
779 u'materiały w tym serwisie, [dobre]'),
780 (0, u'informatyków budujących rozwiązania IT dla firm. [złe]')])
782 pyt10 = quiz_question(
783 label=u'10) Możesz uważać, że informacje, do których docierasz, są wiarygodne, ponieważ:',
785 (1, u'pojawiają się w wielu telewizyjnych serwisach informacyjnych, na profilach społecznościowych '
786 u'moich znajomych i w różnorodnych internetowych serwisach informacyjnych, wszędzie przedstawiane '
787 u'są w podobny sposób,'),
788 (2, u'pojawiają się w wielu serwisach informacyjnych, na profilach moich znajomych, zawierają odnośniki '
789 u'do oryginalnych źródeł, do których można dotrzeć,'),
790 (0, u'pojawiają się na profilach wielu moich znajomych w serwisach społecznościowych i '
791 u'w kilku internetowych serwisach informacyjnych.')])
792 pyt11 = quiz_question(
793 label=u'11) W pewnym mieście prokuratura bada umowy z wykonawcami projektów budżetu obywatelskiego. '
794 u'Nikomu, jak dotąd, nie postawiono zarzutów. Która postać tytułu newsa opublikowanego '
795 u'na lokalnym portalu internetowym będzie najbardziej zgodna z zasadami etyki dziennikarskiej?',
797 (1, u'„Budżet obywatelski: niejasne umowy z wykonawcami?”,'),
798 (2, u'„Prokuratura zbada umowy z wykonawcami projektów budżetu obywatelskiego.”,'),
799 (0, u'„Zobacz, które firmy mogły obłowić się na projektach budżetu obywatelskiego!”.')])
800 pyt12 = quiz_question(
801 label=u'12) Dołączyłeś/-aś do grupy, która zbiera informacje o problemach dotyczących młodych ludzi '
802 u'w Twojej okolicy. Zamierzacie zaprezentować zgromadzone informacje w interesujący sposób, '
803 u'tak by zainteresować lokalne media, służby miejskie, zwykłych obywateli i waszych rówieśników. '
804 u'Grupa nie ma możliwości regularnego spotykania się, dlatego wybraliście pracę wyłącznie '
805 u'przez internet. Który zestaw narzędzi pozwoli wam na jak najlepszą, wspólną pracę?',
807 (0, u'mail grupowy, komunikator tekstowy (np. Messenger), oprogramowanie do tworzenia podcastów, '
808 u'stacjonarne narzędzie do tworzenia prezentacji (np. Power Point),'),
809 (1, u'mail grupowy, komunikator tekstowy zespołu (np. Slack), narzędzie do kolektywnego tworzenia '
810 u'map myśli (np. Coggle), blog redagowany przez wszystkich uczestników projektu, aplikacja do '
811 u'synchronizowania plików w chmurze (np. Dropbox), narzędzie do grupowej komunikacji za pomocą wideo '
812 u'(dyskusyjna) (np. Skype),'),
813 (2, u'aplikacja do zarządzania zadaniami zespołu i terminami do wykonania (np. Wunderlist), '
814 u'narzędzie do tworzenia kolektywnych notatek (np. OneNote) lub wspólnej pracy z tekstem '
815 u'(np. EtherPad, Google Dokumenty), grupa w serwisie społecznościowym lub tekstowy komunikator '
816 u'zespołu (np. Messenger lub Slack), narzędzia do gromadzenia lub prezentowania materiałów '
817 u'(np. wspólny blog, kanał w serwisie społecznościowym).')])
818 pyt13 = quiz_question(
819 label=u'13) Poniżej podano wybrane cechy hasła opublikowanego w Wikipedii. '
820 u'Która z nich jest najbardziej pomocna przy analizie jakości hasła?',
822 (0, u'liczba edycji hasła,'),
823 (1, u'długość i struktura hasła,'),
824 (2, u'obecność i jakość przypisów.')])
825 pyt14 = quiz_question(
826 label=u'14) Na przeglądanej stronie internetowej znalazłeś/-aś interesującą grafikę, którą chciał(a)byś '
827 u'wykorzystać przygotowywanej cyfrowej narracji. Nie jest ona jednak podpisana. Co robisz?',
829 (0, u'podpisuję grafikę adresem strony, na której ją znalazłem/-am,'),
830 (1, u'korzystam z opcji wyszukiwania obrazem w wyszukiwarce grafiki, chcąc znaleźć inne strony, '
831 u'gdzie pojawiła się grafika,'),
832 (2, u'korzystam z opcji wyszukiwania obrazem, a jeśli to się nie powiedzie, skontaktuję się '
833 u'z administratorem strony, na której znalazłem/-am grafikę, pytając o autora; przeglądam także '
834 u'informacje o stronie, szukając ewentualnych informacji o zasadach publikacji treści; być może '
835 u'autor informuje, że wszystkie grafiki są jego autorstwa.')])
836 pyt15 = quiz_question(
838 u'15) W nieistniejącym języku programowania TEST dana jest funkcja zapisana w następujący sposób:'
839 u'<p><code>funkcja f(a) { wyświetl a + b;<br>'
841 u'<strong>Przeczytaj uważnie kod i zastanów się, jak działa ta funkcja.'
842 u'Główną wadą tego kodu jest przetwarzanie brakującego argumentu:</strong>'),
845 (1, u'b będącego dowolną liczbą,'),
847 pyt16 = quiz_question(
848 label=u'16) Przygotowujesz teledysk do utworu nagranego przez twój zespół. Efekt swojej pracy opublikujesz '
849 u'na kanale zespołu na YouTube. Teledysk nie może łamać praw autorskich, w przeciwnym razie zostanie '
850 u'usunięty z serwisu. W teledysku możesz wykorzystać zdjęcia, ikony, fragmenty filmów:',
853 u'znalezionych w wyszukiwarce serwisu Flickr na licencji %s, przygotowanych przez ciebie, '
854 u'ściągniętych z serwisu %s,' % (
855 make_link(u'CC BY-SA', 'https://www.flickr.com/creativecommons/by-sa-2.0/'),
856 make_link(u'The Noun Project', 'https://thenounproject.com')))),
858 u'znalezionych w wyszukiwarce serwisu Flickr na licencji %s, przygotowanych przez ciebie, '
859 u'ściągniętych z %s,' % (
860 make_link(u'CC-BY', 'https://www.flickr.com/creativecommons/by-2.0/'),
861 make_link(u'serwisu ze zdjęciami NASA',
862 'https://www.nasa.gov/multimedia/imagegallery/index.html')))),
864 u'znalezionych w wyszukiwarce serwisu Flickr na licencji %s, przygotowanych przez ciebie, '
865 u'ściągniętych z wyszukiwarki grafiki Google.' %
866 make_link('CC-BY-NC', 'https://www.flickr.com/creativecommons/by-nc-2.0/')))])
867 pyt17 = quiz_question(
869 u'17) Muzeum cyfrowe udostępniło skan druku propagandowego z pierwszej połowy XVII w. '
870 u'w humorystyczny sposób przedstawiający strony angielskiej wojny domowej (trwającej z przerwami '
871 u'między 1642-1651 rokiem):'
872 u'<p><a href="https://commons.wikimedia.org/wiki/File:Engl-Bürgerkrieg.JPG">'
873 u'<img src="https://upload.wikimedia.org/wikipedia/commons/c/c6/Engl-B%C3%BCrgerkrieg.JPG"></a></p>'
874 u'<p><a href="https://commons.wikimedia.org/wiki/File:Engl-Bürgerkrieg.JPG">'
875 u'https://commons.wikimedia.org/wiki/File:Engl-Bürgerkrieg.JPG</a></p>'
876 u'<strong>Najbardziej użytecznym dla użytkowników przeszukujących stronę zestawem słów kluczowych '
877 u'opisujących ten obiekt będzie:</strong>'),
879 (2, u'Anglia, wojna domowa, karykatura, propaganda,'),
880 (0, u'komiks, śmiech, Anglicy, Wielka Brytania, psy,'),
881 (1, u'Angielska Wojna Domowa 1642-1651, propaganda.')])
882 pyt18 = quiz_question(
883 label=u'18) Podczas wycieczki szkolnej zrobiłeś sporo zdjęć znajomym, w różnych sytuacjach. '
884 u'Masz również dostęp do wielu fotografii, które przygotowali twoi koledzy i koleżanki. '
885 u'Zamierzasz niektóre z nich zamieścić na swoim kanale w serwisie społecznościowym. Możesz opublikować:',
887 (0, u'zdjęcia prezentujące selfie (o ile nie przedstawiają więcej niż dwóch osób), '
888 u'zdjęcia grupy podczas zwiedzania, zdjęcia, które ktoś zrobił tobie na tle zwiedzanych obiektów, '
889 u'zdjęcia, na których ludzie się uśmiechają i cieszą, że robisz im zdjęcie,'),
890 (1, u'zdjęcia prezentujące selfie (ale tylko twoje), zdjęcia pokazujące w oddali grupę na tle '
891 u'zwiedzanych obiektów, zdjęcia, zdjęcia na których widać tylko ciebie, na tle zwiedzanych obiektów,'),
892 (2, u'zdjęcia prezentujące selfie (na których jesteś ty, ale również inne osoby, które potwierdziły, '
893 u'że możesz opublikować fotografie), zdjęcia na których widać tylko ciebie '
894 u'i masz zgodę na ich publikację od osoby, która wykonała fotografię, '
895 u'wykonane przez ciebie zdjęcia zwiedzanych obiektów.')])
896 pyt19 = quiz_question(
897 label=u'19) Korzystając z sieci, natrafiamy na różne interesujące informacje. '
898 u'Pojawiają się w wielu serwisach informacyjnych, społecznościowych, w postaci reklam '
899 u'dołączanych do materiałów wideo, reklam zamieszczonych w tekstach itp. '
900 u'Na co warto zwracać uwagę, podczas codziennego korzystania z mediów, '
901 u'żeby efektywnie wykorzystać czas spędzony w internecie?',
903 (1, u'zaplanować czas spędzany na korzystaniu z mediów i starać się trzymać swojego planu, '
904 u'nie unikasz jednak nagłych rozmów przez komunikator, oglądania postów, '
905 u'zdjęć i filmików dodawanych przez znajomych,'),
906 (0, u'zaplanować, co będziesz robił(a), ale traktujesz to jako ramę działania, wiesz, '
907 u'że po drodze pojawi się wiele interesujących informacji, z których skorzystasz,'),
908 (2, u'zaplanować czas spędzany na korzystaniu z mediów i rejestrować, co, '
909 u'kiedy i przez ile czasu robisz, np. instalując aplikację do mierzenia czasu spędzanego w sieci. '
910 u'Następnie analizujesz zebrane informacje i starasz się określić, co robisz zbyt często '
911 u'i jakie rzeczy odciągają Twoją uwagę od tych zaplanowanych.')])
912 pyt20 = quiz_question(
913 label=u'20) Blokująca reklamy wtyczka do przeglądarki działa w następujący sposób:',
915 (0, u'analizuje treść tekstów oraz obrazków i blokuje te, które zawierają reklamy,'),
916 (1, u'blokuje wyświetlanie plików reklam zanim wyświetli je przeglądarka,'),
917 (2, u'blokuje komunikację przeglądarki z serwerami publikującymi reklamy.')])
920 (u'dobrze', u'źle', u'najlepiej'),
921 (u'średnio', u'głupio', u'super'),
922 (u'słabo', u'beznadziejnie', u'ujdzie'),
923 (u'trója', u'pała', u'szóstka'),
924 (u'dobrze', u'źle', u'najlepiej'),
925 (u'średnio', u'głupio', u'super'),
926 (u'słabo', u'beznadziejnie', u'ujdzie'),
927 (u'trója', u'pała', u'szóstka'),
928 (u'dobrze', u'źle', u'najlepiej'),
929 (u'średnio', u'głupio', u'super'),
930 (u'słabo', u'beznadziejnie', u'ujdzie'),
931 (u'trója', u'pała', u'szóstka'),
932 (u'dobrze', u'źle', u'najlepiej'),
933 (u'średnio', u'głupio', u'super'),
934 (u'słabo', u'beznadziejnie', u'ujdzie'),
935 (u'trója', u'pała', u'szóstka'),
936 (u'dobrze', u'źle', u'najlepiej'),
937 (u'średnio', u'głupio', u'super'),
938 (u'słabo', u'beznadziejnie', u'ujdzie'),
939 (u'trója', u'pała', u'szóstka'),
943 def results(cls, contact):
944 fields = cls().fields
946 def get_idx(choices, answer):
947 return dict((score, i) for i, (score, text) in enumerate(choices))[answer]
949 def question_data(i):
951 choices = fields[field].choices
952 score = contact.body[field]
953 chosen_idx = get_idx(choices, score)
954 correct_idx = get_idx(choices, 2)
957 'chosen_idx': chosen_idx,
958 'correct_idx': correct_idx,
959 'chosen': 'abc'[chosen_idx],
960 'correct': 'abc'[correct_idx],
961 'label': fields[field].label,
962 'comment': cls.ANSWER_COMMENTS[i-1][chosen_idx],
963 'answers': [(text, a_score == score, a_score == 2) for a_score, text in choices],
965 question_count = len(fields) - 1
966 questions = [question_data(i) for i in xrange(1, question_count + 1)]
967 points = sum(question['score'] for question in questions)
968 return {'questions': questions, 'points': points/2., 'total': question_count}