X-Git-Url: https://git.mdrn.pl/edumed.git/blobdiff_plain/fd65827f7d34921b927dfd735099b0690aa3a2df..f393f3067f3d9f1e63e3076f78a78d8d779691fb:/edumed/contact_forms.py?ds=sidebyside diff --git a/edumed/contact_forms.py b/edumed/contact_forms.py index 3e7abab..e5ceff2 100644 --- a/edumed/contact_forms.py +++ b/edumed/contact_forms.py @@ -1,91 +1,30 @@ # -*- coding: utf-8 -*- from django import forms +from django.forms.formsets import BaseFormSet + from contact.forms import ContactForm -from django.core.mail import send_mail -from django.core.exceptions import ValidationError -from django.core.validators import validate_email -from django.template.loader import render_to_string from django.utils.translation import ugettext_lazy as _ - -class RegistrationForm(ContactForm): - form_tag = 'sugestie' - form_title = u"ZgÅoÅ sugestiÄ" - admin_list = ['podpis', 'contact', 'temat'] - - contact = forms.EmailField(label=u'E-mail', max_length=128, required=False) - podpis = forms.CharField(label=u'Podpis', max_length=128, required=False) - temat = forms.CharField(label=u'Temat zgÅoszenia', max_length=255) - tresc = forms.CharField(label=u'TreÅÄ', widget=forms.Textarea, max_length=1800) - - -class CooperateForm(ContactForm): - form_tag = 'wspolpraca' - form_title = u"BÄ dź z nami w kontakcie" - admin_list = ['podpis', 'contact'] - - podpis = forms.CharField(label=u'ImiÄ i nazwisko', max_length=128) - contact = forms.EmailField(label=u'E-mail', max_length=128) - instytucja = forms.CharField(label=u'Instytucja (nazwa, adres)', - widget=forms.Textarea, max_length=1000, required=False) - uwagi = forms.CharField(label=u'Uwagi', widget=forms.Textarea, max_length=1800, required=False) - - zajecia_przedszkole = forms.BooleanField(label=u'ProwadzÄ zajÄcia z dzieÄmi w wieku przedszkolnym', required=False) - zajecia_sp13 = forms.BooleanField(label=u'ProwadzÄ zajÄcia z dzieÄmi z SP kl. 1-3', required=False) - zajecia_sp46 = forms.BooleanField(label=u'ProwadzÄ zajÄcia z dzieÄmi z SP kl. 4-6', required=False) - zajecia_gimnazjum = forms.BooleanField(label=u'ProwadzÄ zajÄcia z mÅodzieÅ¼Ä w wieku gimnazjalnym', required=False) - zajecia_ponadgimnazjalne = forms.BooleanField(label=u'ProwadzÄ zajÄcia z mÅodzieÅ¼Ä ze szkóŠponadgimnazjalnych', required=False) - zajecia_wyzsze = forms.BooleanField(label=u'ProwadzÄ zajÄcia w szkole wyższej', required=False) - zajecia_dorosli = forms.BooleanField(label=u'ProwadzÄ zajÄcia dla dorosÅych', required=False) - zajecia_seniorzy = forms.BooleanField(label=u'ProwadzÄ zajÄcia dla seniorów', required=False) - - -class ContestForm(ContactForm): - form_tag = 'konkurs' - form_title = u"ZgÅoÅ siÄ do konkursu" - admin_list = ['nazwisko', 'instytucja', 'tytul'] - - nazwisko = forms.CharField(label=u'ImiÄ i nazwisko', max_length=128) - contact = forms.EmailField(label=u'Adres e-mail', max_length=128) - instytucja = forms.CharField(label=u'Instytucja (nazwa, adres)', - widget=forms.Textarea, max_length=1000) - tytul = forms.CharField(label=u'TytuÅ przeprowadzonej lekcji', - help_text=u'proszÄ wymieniÄ wszystkie, jeÅli zostaÅy przeprowadzone wiÄcej niż jedne zajÄcia', - widget=forms.Textarea, max_length=1000) - uczestnicy = forms.CharField(label=u'Liczba uczestników', max_length=64) - trudnosci = forms.CharField(label=u'Czy w trakcie zajÄÄ pojawiÅy siÄ jakieÅ trudnoÅci? JeÅli tak, to jakie?', - widget=forms.Textarea, max_length=2000) - pomocne = forms.CharField(label=u'Co w materiaÅach okazaÅo siÄ najbardziej pomocne w przygotowaniu i prowadzeniu lekcji?', - widget=forms.Textarea, max_length=2000) - nieprzydatne = forms.CharField(label=u'Co w materiaÅach okazaÅo siÄ nieprzydatne w przygotowaniu i prowadzeniu lekcji?', - widget=forms.Textarea, max_length=2000) - poprawic = forms.CharField(label=u'Jak możemy poprawiÄ serwis edukacjamedialna.edu.pl?', - widget=forms.Textarea, max_length=2000, - required=False) - inne = forms.CharField(label=u'Inne uwagi i komentarze', - widget=forms.Textarea, max_length=2000, - required=False) - zgoda_regulamin = forms.BooleanField( - label=u'Znam i akceptujÄ regulamin konkursu Medialog.', - help_text=u'Zobacz <a href="/media/chunks/attachment/Regulamin_konkursu_MediaLog_1.pdf">regulamin konkursu MediaLog</a>.' - ) - zgoda_informacje = forms.BooleanField( - label=u'Wyrażam zgodÄ na otrzymywanie informacji od Fundacji Nowoczesna Polska zwiÄ zanych z edukacjÄ medialnÄ .', - required=False - ) - - -class UdzialForm(ContactForm): - form_tag = 'udzial' - form_title = u"UdziaÅ" - admin_list = ['nazwisko', 'miejscowosc', 'instytucja'] - - nazwisko = forms.CharField(label=u'ImiÄ i nazwisko', max_length=128) - miejscowosc = forms.CharField(label=u'MiejscowoÅÄ', max_length=128) - instytucja = forms.CharField(label=u'Nazwa organizacji/instytucji', max_length=128) - contact = forms.EmailField(label=u'Adres e-mail', max_length=128) - telefon = forms.CharField(label=u'Telefon', max_length=32) - uczestnicy = forms.IntegerField(label=u'Przewidywana liczba uczestników zajÄÄ') +WOJEWODZTWA = ( + u'dolnoÅlÄ skie', + u'kujawsko-pomorskie', + u'lubelskie', + u'lubuskie', + u'Åódzkie', + u'maÅopolskie', + u'mazowieckie', + u'opolskie', + u'podkarpackie', + u'podlaskie', + u'pomorskie', + u'ÅlÄ skie', + u'ÅwiÄtokrzyskie', + u'warmiÅsko-mazurskie', + u'wielkopolskie', + u'zachodniopomorskie', +) + +WOJEWODZTWO_CHOICES = [(u'', u'(wybierz)')] + [(w, w) for w in WOJEWODZTWA] class WTEMStudentForm(forms.Form): @@ -94,68 +33,72 @@ class WTEMStudentForm(forms.Form): email = forms.EmailField(label=u'Adres e-mail', max_length=128) form_tag = "student" -# FIXME: doesn't do what is says anymore. -class NoEmptyFormsAllowedBaseFormSet(forms.formsets.BaseFormSet): + +class NonEmptyBaseFormSet(BaseFormSet): """ Won't allow formset_factory to be submitted with no forms """ def clean(self): - needed = 3 for form in self.forms: if form.cleaned_data: - needed -= 1 - #return - if needed > 0: - raise forms.ValidationError(u"ProszÄ podaÄ dane przynajmniej trzech osób.") + return + forms.ValidationError(u"ProszÄ podaÄ dane przynajmniej jednej osoby.") + + +class CommissionForm(forms.Form): + name = forms.CharField(label=u'ImiÄ i nazwisko CzÅonka Komisji', max_length=128) + form_tag = "commission" -class WTEMForm(ContactForm): - disabled = True + +class OlimpiadaForm(ContactForm): + ends_on = (2017, 11, 17, 0, 5) disabled_template = 'wtem/disabled_contact_form.html' - form_tag = "wtem" - form_title = u"WTEM - rejestracja uczestników" + form_tag = "olimpiada" + form_title = u"Olimpiada Cyfrowa - Elektroniczny System ZgÅoszeÅ" submit_label = u"WyÅlij zgÅoszenie" - admin_list = ['imie', 'nazwisko', 'institution'] - form_formsets = (forms.formsets.formset_factory(WTEMStudentForm, formset=NoEmptyFormsAllowedBaseFormSet, max_num=5, validate_max=True, extra=5),) - - contact = forms.EmailField(label=u'Adres e-mail opiekuna/opiekunki', max_length=128) - imie = forms.CharField(label=u'ImiÄ', max_length=128) - nazwisko = forms.CharField(label=u'Nazwisko', max_length=128) - function = forms.CharField(label=u'PeÅniona funkcja', max_length=255) - institution = forms.CharField(label=u'Nazwa instytucji', max_length=255) - institution_address = forms.CharField(label=u'Adres instytucji', widget=forms.Textarea, max_length=1000) - institution_email = forms.EmailField(label=u'Adres e-mail instytucji', max_length=128) - institution_phone = forms.CharField(label=u'Telefon do instytucji', max_length=32) - institution_www = forms.URLField(label=u'Strona WWW instytucji', max_length=255, required=False) + admin_list = ['nazwisko', 'school'] + form_formsets = { + 'student': forms.formsets.formset_factory(WTEMStudentForm, formset=NonEmptyBaseFormSet), + 'commission': forms.formsets.formset_factory(CommissionForm), + } + + contact = forms.EmailField(label=u'Adres e-mail PrzewodniczÄ cego/PrzewodniczÄ cej', max_length=128) + przewodniczacy = forms.CharField(label=u'ImiÄ i nazwisko PrzewodniczÄ cego/PrzewodniczÄ cej', max_length=128) + school = forms.CharField(label=u'Nazwa szkoÅy', max_length=255) + school_address = forms.CharField(label=u'Adres szkoÅy', widget=forms.Textarea, max_length=1000) + school_wojewodztwo = forms.ChoiceField(label=u'Województwo', choices=WOJEWODZTWO_CHOICES) + school_email = forms.EmailField(label=u'Adres e-mail szkoÅy', max_length=128) + school_phone = forms.CharField(label=u'Numer telefonu szkoÅy', max_length=32) + school_www = forms.URLField(label=u'Strona WWW szkoÅy', max_length=255, required=False) zgoda_regulamin = forms.BooleanField( - label=u'Znam i akceptujÄ regulamin Wielkiego Turnieju Edukacji Medialnej.', - help_text=u'Zobacz <a href="/media/chunks/attachment/regulamin_III_edycja.pdf">regulamin Wielkiego Turnieju Edukacji Medialnej</a>.' + label=u'Znam i akceptujÄ Regulamin Olimpiady Cyfrowej.', + help_text=u'Zobacz <a href="https://olimpiadacyfrowa.pl/regulamin/" target="_blank">' + u'regulamin Olimpiady Cyfrowej</a>.' ) zgoda_dane = forms.BooleanField( - label=u'Wyrażam zgodÄ na przetwarzanie moich danych osobowych oraz danych osobowych moich podopiecznych.', - #help_text=u'Zobacz <a href="/media/chunks/attachment/Oswiadczenie_o_danych_osobowych.pdf">peÅnÄ treÅÄ oÅwiadczenia</a>.' - ) - - potw_uczniowie = forms.BooleanField( - label=u'Potwierdzam, że zgÅoszeni Uczestnicy/Uczestniczki w chwili rejestracji sÄ uczniami/uczennicami szkoÅy ponadgimnazjalnej.', - ) - zgoda_informacje = forms.BooleanField( - label=u'Wyrażam zgodÄ na otrzymywanie informacji od Fundacji Nowoczesna Polska zwiÄ zanych z edukacjÄ medialnÄ .', - required=False - ) + label=u'OÅwiadczam, że wyrażam zgodÄ na przetwarzanie danych osobowych zawartych w niniejszym formularzu ' + u'zgÅoszeniowym przez FundacjÄ Nowoczesna Polska (administratora danych) z siedzibÄ w Warszawie (00-514) ' + u'przy ul. MarszaÅkowskiej 84/92 lok. 125 na potrzeby organizacji Olimpiady Cyfrowej. JednoczeÅnie ' + u'oÅwiadczam, że zostaÅam/em poinformowana/y o tym, że mam prawo wglÄ du w treÅÄ swoich danych ' + u'i możliwoÅÄ ich poprawiania oraz że ich podanie jest dobrowolne, ale niezbÄdne do dokonania ' + u'zgÅoszenia.') + zgoda_newsletter = forms.BooleanField( + label=u'ChcÄ otrzymywaÄ newsletter: Edukacja medialna', required=False) extract_types = (dict(slug='extended', label=_('extended')),) @staticmethod def get_extract_fields(contact, extract_type_slug): fields = contact.body.keys() - fields.pop(fields.index('student')) + if 'student' in fields: + fields.remove('student') fields.extend(['contact', 'student_first_name', 'student_last_name', 'student_email']) return fields @staticmethod def get_extract_records(keys, contact, extract_type_slug): - toret = [dict()] + toret = [{}] for field_name in keys: if field_name.startswith('student_'): continue @@ -164,134 +107,33 @@ class WTEMForm(ContactForm): else: val = contact.body[field_name] toret[0][field_name] = val - + current = toret[0] - for student in contact.body['student']: - for attr in ('first_name', 'last_name', 'email'): - current['student_' + attr] = student[attr] - if not current in toret: - toret.append(current) - current = dict() + if 'student' in contact.body: + for student in contact.body['student']: + for attr in ('first_name', 'last_name', 'email'): + current['student_' + attr] = student[attr] + if current not in toret: + toret.append(current) + current = {} return toret def save(self, request, formsets=None): - contact = super(WTEMForm, self).save(request, formsets) + from wtem.models import Confirmation + contact = super(OlimpiadaForm, self).save(request, formsets) - mail_subject = render_to_string('contact/wtem/student_mail_subject.html').strip() - mail_body = render_to_string('contact/wtem/student_mail_body.html') for formset in formsets or []: - for f in formset.forms: - email = f.cleaned_data.get('email', None) - try: - validate_email(email) - except ValidationError: - pass - else: - send_mail(mail_subject, mail_body, 'edukacjamedialna@nowoczesnapolska.org.pl', [email], fail_silently=True) - + if formset.prefix == 'student': + for f in formset.forms: + email = f.cleaned_data.get('email', None) + if email: + try: + Confirmation.objects.get(email=email) + except Confirmation.DoesNotExist: + first_name = f.cleaned_data.get('first_name', None) + last_name = f.cleaned_data.get('last_name', None) + if first_name and last_name: + confirmation = Confirmation.create( + first_name=first_name, last_name=last_name, email=email, contact=contact) + confirmation.send_mail() return contact - - -class MILForm(ContactForm): - form_tag = 'mil' - form_title = _('Share your thoughts on the "Media and information literacy competencies catalogue"') - submit_label = _('Submit') - base_template = 'base_mil.html' - site_name = site_domain = 'katalog.nowoczesnapolska.org.pl' - - name = forms.CharField(label = _('Name and Surname'), max_length = 255) - contact = forms.EmailField(label = _('E-mail'), max_length = 255) - - institution = forms.CharField(label =_('Institution'), widget = forms.Textarea, max_length = 8192) - - question_stages = forms.CharField( - label = _('What do you think about the proposed educational stages classification?'), - widget = forms.Textarea, - max_length = 255, - required = False - ) - - question_fields = forms.CharField( - label = _('What do you think about the proposed thematic fields?'), - widget = forms.Textarea, - max_length = 255, - required = False - ) - - question_left_out = forms.CharField( - label = _('What important areas of media and information literacy have been left out?'), - widget = forms.Textarea, - max_length = 255, - required = False - ) - - other = forms.CharField( - label = _('Other suggestions and comments'), - widget = forms.Textarea, - max_length = 255, - required = False - ) - - -class TEMForm(ContactForm): - form_tag = 'tem' - form_title = u"TEM - szkolenie dla trenerów edukacji medialnej" - admin_list = ['imie', 'nazwisko', 'instytucja', 'contact'] - - imie = forms.CharField(label=u'ImiÄ', max_length=128) - nazwisko = forms.CharField(label=u'Nazwisko', max_length=128) - contact = forms.EmailField(label=u'E-mail', max_length=128) - telefon = forms.CharField(label=u'Tel. kontaktowy', max_length=128) - instytucja = forms.CharField(label=u'Instytucja', max_length=256) - adres = forms.CharField(label=u'Adres', - widget=forms.Textarea, max_length=1000) - stanowisko = forms.CharField(label=u'Stanowisko', max_length=256) - doswiadczenie = forms.CharField(label=u'Jakie jest Pani/Pana doÅwiadczenie w zakresie edukacji medialnej?', - widget=forms.Textarea, max_length=500, help_text=u'(max 500 znaków)') - dlaczego = forms.CharField(label=u'Dlaczego chce Pani/Pan wziÄ Ä udziaÅ w szkoleniu?', - widget=forms.Textarea, max_length=500, help_text=u'(max 500 znaków)') - jak_wykorzystac = forms.CharField(label=u'Jak zamierza Pan/Pani wykorzystaÄ wiedzÄ zdobytÄ w czasie szkolenia?', - widget=forms.Textarea, max_length=500, help_text=u'(max 500 znaków)') - - zajecia = forms.BooleanField(label=u'W okresie wrzesieÅ-październik 2015 r. przeprowadzÄ min. 2 godziny zajÄÄ edukacji medialnej z wybranÄ grupÄ dzieci lub mÅodzieży.', required=True) - zgoda_informacje = forms.BooleanField(label=u'Wyrażam zgodÄ na otrzymywanie informacji od Fundacji Nowoczesna Polska zwiÄ zanych z edukacjÄ medialnÄ .', required=False) - - -class SuperwizjaForm(ContactForm): - form_tag = 'superwizja' - form_title = u"Informacje o zajÄciach" - admin_list = ['nazwisko', 'contact', 'skype', 'temat'] - submit_label = u'WyÅlij' - - nazwisko = forms.CharField(label=u'ImiÄ i nazwisko', max_length=1024) - contact = forms.CharField(label=u'E-mail kontaktowy', required=False) - skype = forms.CharField(label=u'Nazwa użytkownika Skype', max_length=255) - temat = forms.CharField(label=u'Temat zajÄÄ', max_length=1024) - termin = forms.CharField(label=u'Termin zajÄÄ', max_length=1024) - czas_trwania = forms.CharField(label=u'Czas trwania zajÄÄ', max_length=1024) - miejsce = forms.CharField(label=u'Miejsce prowadzenia zajÄÄ', max_length=1024) - rodzaj = forms.ChoiceField(label=u'Rodzaj zajÄÄ', widget=forms.RadioSelect, choices=[('jednorazowe', 'jednorazowe'), ('w ramach cyklu', 'w ramach cyklu')]) - cykl = forms.CharField(label=u'JeÅli w ramach cyklu, to podaj jego temat i czas trwania', required=False) - sposob = forms.ChoiceField(label=u'Sposób prowadzenia zajÄÄ', widget=forms.RadioSelect, choices=[('samodzielnie', 'samodzielnie'), (u'z drugÄ osobÄ ', 'z drugÄ osobÄ ')]) - wrazenia = forms.CharField(label=u'Opisz Twoje ogólne wrażenia po warsztacie.', widget=forms.Textarea, max_length=4096) - opiekun = forms.CharField(label=u'Czy opiekun grupy byÅ obecny podczas zajÄÄ? JeÅli tak, opisz krótko jego rolÄ.', widget=forms.Textarea, max_length=4096) - grupa = forms.CharField(label=u'Opisz krótko grupÄ uczestników zajÄÄ (wiek, liczba osób, czy to pierwszy kontakt z grupÄ ).', widget=forms.Textarea, max_length=4096) - cel = forms.CharField(label=u'Jaki byÅ zaÅożony cel zajÄÄ? Dlaczego wybraÅaÅ/eÅ taki cel?', widget=forms.Textarea, max_length=4096) - ewaluacja = forms.CharField(label=u'W jaki sposób sprawdziÅeÅ/aÅ, czy cel zajÄÄ zostaÅ zrealizowany? Opisz krótko efekty zajÄÄ.', widget=forms.Textarea, max_length=4096) - # header - przygotowania = forms.CharField(label=u'Opisz w punktach proces przygotowania siÄ do zajÄÄ.', widget=forms.Textarea, max_length=4096) - przygotowania_trudnosci = forms.CharField(label=u'Co na etapie przygotowaÅ sprawiÅo Ci najwiÄkszÄ trudnoÅÄ?', widget=forms.Textarea, max_length=4096) - przygotowania_pomoc = forms.CharField(label=u'Co byÅo pomocne w przygotowaniu zajÄÄ? (Czy korzystaÅaÅ/eÅ z materiaÅów z serwisu edukacjamedialna.edu.pl? JeÅli tak, to jakich?)', widget=forms.Textarea, max_length=4096) - narzedzia = forms.CharField(label=u'Jakie narzÄdzie/a planowaÅaÅ/eÅ wykorzystaÄ, a jakie wykorzystaÅaÅ/eÅ?', widget=forms.Textarea, max_length=4096) - struktura = forms.CharField(label=u'Opisz w punktach strukturÄ zajÄÄ. Zaznacz ile czasu planowaÅaÅ/eÅ na każdÄ czÄÅÄ, a ile czasu faktycznie Ci to zajÄÅo.', widget=forms.Textarea, max_length=4096) - prowadzenie_trudnosci = forms.CharField(label=u'Co sprawiaÅo Ci trudnoÅÄ w prowadzeniu zajÄÄ?', widget=forms.Textarea, max_length=4096) - prowadzenie_pomoc = forms.CharField(label=u'Co byÅo pomocne w prowadzeniu zajÄÄ?', widget=forms.Textarea, max_length=4096) - kontrakt = forms.CharField(label=u'W jakiej formie zostaÅ zawarty kontrakt z uczestnikami? Jakie zasady zostaÅy przyjÄte? Czy w trakcie zajÄÄ Ty bÄ dź uczestnicy odwoÅywaliÅcie siÄ do kontraktu?', widget=forms.Textarea, max_length=4096) - trudne_sytuacje = forms.CharField(label=u'Czy podczas zajÄÄ miaÅy miejsce tzw. âtrudne sytuacjeâ. Jak na nie zareagowaÅaÅ/eÅ? Czy potrzebowaÅabyÅ/ÅbyÅ czegoÅ w zwiÄ zku z nimi?', widget=forms.Textarea, max_length=4096) - informacje_zwrotne = forms.CharField(label=u'Czy zbieraÅaÅ/eÅ informacje zwrotne od uczestników? JeÅli tak, na co zwrócili uwagÄ? W jaki sposób zbieraÅaÅ/eÅ informacje zwrotne?', widget=forms.Textarea, max_length=4096) - - mocne_strony = forms.CharField(label=u'Opisz w punktach mocne strony przeprowadzonych zajÄÄ.', widget=forms.Textarea, max_length=4096) - zmiany = forms.CharField(label=u'Opisz w punktach, co byÅ zmieniÅ(a) na przyszÅoÅÄ.', widget=forms.Textarea, max_length=4096) - potrzeby = forms.CharField(label=u'Czy potrzebowaÅbyÅ/ÅbyÅ czegoÅ przed nastÄpnymi zajÄciami?', widget=forms.Textarea, max_length=4096) - uwagi = forms.CharField(label=u'Inne uwagi', widget=forms.Textarea, max_length=4096, required=False) -