- 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)
+ data_processing = make_data_processing(
+ u'Dane są przetwarzane w zakresie niezbędnym do wysłania powiadomienia odbiorcom.')
+ submit_label = u'Wyślij'
+
+
+class WTEMStudentForm(forms.Form):
+ first_name = forms.CharField(label=u'Imię', max_length=128)
+ last_name = forms.CharField(label=u'Nazwisko', max_length=128)
+ email = forms.EmailField(label=u'Adres e-mail', max_length=128)
+ form_tag = "student"
+
+ def clean_email(self):
+ email = self.cleaned_data['email']
+ if Confirmation.objects.filter(email=email):
+ raise forms.ValidationError(u'Uczeń z tym adresem już został zgłoszony.')
+ return email
+
+
+class WTEMStudentUpdateForm(WTEMStudentForm):
+ def clean_email(self):
+ return self.cleaned_data['email']
+
+
+class NonEmptyBaseFormSet(BaseFormSet):
+ """
+ Won't allow formset_factory to be submitted with no forms
+ """
+ def clean(self):
+ for form in self.forms:
+ if form.cleaned_data:
+ return
+ forms.ValidationError(u"Proszę podać dane przynajmniej jednej osoby.")
+
+
+class StudentBaseFormSet(NonEmptyBaseFormSet):
+ def check_unique_emails(self):
+ from django.forms.util import ErrorList
+
+ emails = set()
+ for form in self.forms:
+ if not form.is_valid():
+ continue
+ if form.cleaned_data:
+ email = form.cleaned_data['email']
+ instance = getattr(self, 'instance', None)
+ if email in emails:
+ errors = form._errors.setdefault('email', ErrorList())
+ errors.append(u'Każdy zgłoszony uczeń powinien mieć własny adres email')
+ elif instance and Confirmation.objects.exclude(contact=instance).filter(email=email).exists():
+ errors = form._errors.setdefault('email', ErrorList())
+ errors.append(u'Uczeń z tym adresem już został zgłoszony w innym formularzu.')
+ else:
+ emails.add(email)
+
+ def clean(self):
+ super(StudentBaseFormSet, self).clean()
+ self.check_unique_emails()
+
+
+class StudentUpdateFormSet(StudentBaseFormSet):
+ takes_instance = True
+
+ def __init__(self, *args, **kwargs):
+ instance = kwargs.pop('instance', None)
+ super(StudentUpdateFormSet, self).__init__(*args, **kwargs)
+ self.instance = instance
+
+ def clean(self):
+ super(StudentUpdateFormSet, self).clean()
+ self.check_unique_emails()
+
+
+class CommissionForm(forms.Form):
+ name = forms.CharField(label=u'Imię i nazwisko Członka Komisji', max_length=128)
+ form_tag = "commission"
+
+
+class OlimpiadaForm(ContactForm):
+ ends_on = (2018, 11, 10, 0, 5)
+ disabled_template = 'wtem/disabled_contact_form.html'
+ form_tag = "olimpiada"
+ old_form_tags = ["olimpiada-2016", "olimpiada-2017"]
+ form_title = u"Olimpiada Cyfrowa - Elektroniczny System Zgłoszeń"
+ submit_label = u"Wyślij zgłoszenie"
+ admin_list = ['nazwisko', 'school']
+ form_formsets = {
+ 'student': forms.formsets.formset_factory(WTEMStudentForm, formset=StudentBaseFormSet),
+ 'commission': forms.formsets.formset_factory(CommissionForm),
+ }
+ mailing_field = 'zgoda_newsletter'
+ confirmation_class = TeacherConfirmation
+
+ 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)
+ przewodniczacy_phone = forms.CharField(
+ label=u'Numer telefonu Przewodniczącego/Przewodniczącej', max_length=128,
+ help_text=u'Zadzwonimy tylko w przypadku problemów ze zgłoszeniem.')
+ 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)
+