nalodeni.pirati.cz/nalodeni/forms.py

226 lines
7.9 KiB
Python

# -*- encoding: utf-8 -*-
from django import forms
from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _
from django.core.exceptions import ValidationError
from . import models
class AppUserForm(ModelForm):
def __init__(self, *args, **kwargs):
super(AppUserForm, self).__init__(*args, **kwargs)
self.fields['email'].disabled = True
self.fields['email_contact_active'].disabled = True
self.fields['dc_stamp'].disabled = True
class Meta:
model = models.AppUser
fields = ['first_name','last_name',
'city', 'postcode', 'district', 'kind',
'email', 'email_contact', 'email_contact_active', 'dc_stamp', 'admin_note']
def clean_postcode(self):
data = self.cleaned_data['postcode']
if data is not None:
if data < 10000 or data > 99999:
raise ValidationError(_('PSČ musí být číslo mezi 10000 a 99999.'), code='invalid')
return data
def clean_first_name(self):
data = self.cleaned_data['first_name']
if data is not None:
if len(data) > 30:
raise ValidationError(_('Jméno může mít maximálně 30 znaků.'), code='invalid')
return data
def clean_last_name(self):
data = self.cleaned_data['last_name']
if data is not None:
if len(data) > 30:
raise ValidationError(_('Příjmení může mít maximálně 30 znaků.'), code='invalid')
return data
def clean_city(self):
data = self.cleaned_data['city']
if data is not None:
if len(data) > 50:
raise ValidationError(_('Město může mít maximálně 50 znaků.'), code='invalid')
return data
class AppUserSsoForm(ModelForm):
def __init__(self, *args, **kwargs):
super(AppUserSsoForm, self).__init__(*args, **kwargs)
self.fields['email'].disabled = True
self.fields['email_contact_active'].disabled = True
self.fields['dc_stamp'].disabled = True
class Meta:
model = models.AppUser
fields = ['city', 'postcode', 'district', 'kind',
'email', 'email_contact', 'email_contact_active', 'dc_stamp' ]
def clean_postcode(self):
data = self.cleaned_data['postcode']
if data is not None:
if data < 10000 or data > 99999:
raise ValidationError(_('PSČ musí být číslo mezi 10000 a 99999.'), code='invalid')
return data
def clean_first_name(self):
data = self.cleaned_data['first_name']
if data is not None:
if len(data) > 30:
raise ValidationError(_('Jméno může mít maximálně 30 znaků.'), code='invalid')
return data
def clean_last_name(self):
data = self.cleaned_data['last_name']
if data is not None:
if len(data) > 30:
raise ValidationError(_('Příjmení může mít maximálně 30 znaků.'), code='invalid')
return data
def clean_city(self):
data = self.cleaned_data['city']
if data is not None:
if len(data) > 50:
raise ValidationError(_('Město může mít maximálně 50 znaků.'), code='invalid')
return data
class AppRegEmailForm(ModelForm):
class Meta:
model = models.AppRegEmail
fields = ['email', 'postcode', 'kind', 'interestedIn', 'data_consent']
def clean_postcode(self):
data = self.cleaned_data['postcode']
if data is not None:
if data < 10000 or data > 99999:
raise ValidationError(_('PSČ musí být číslo mezi 10000 a 99999.'), code='invalid')
return data
def clean_data_consent(self):
data = self.cleaned_data['data_consent']
if data is None or data == False:
raise ValidationError(_('Prosím, potvrďte souhlas se zpracováním osobních údajů.'), code='invalid')
return data
def clean_kind(self):
data = self.cleaned_data['kind']
if data is None:
raise ValidationError(_('Prosím vyberte, o co máte zájem.'), code='invalid')
return data
class AppRegFollowEmailForm(ModelForm):
class Meta:
model = models.AppRegEmail
fields = ['email', 'data_consent']
def clean_data_consent(self):
data = self.cleaned_data['data_consent']
if data is None or data == False:
raise ValidationError(_('Prosím, potvrďte souhlas se zpracováním osobních údajů.'), code='invalid')
return data
class UserFormForm(ModelForm):
def __init__(self, *args, **kwargs):
super(UserFormForm, self).__init__(*args, **kwargs)
self.fields['skills'] = forms.ModelMultipleChoiceField(
label=_("Moje dovednosti (dokážu pomoci s)"),
widget=forms.CheckboxSelectMultiple,
queryset=models.UserSkill.objects.all(),
required=False)
self.fields['topics'] = forms.ModelMultipleChoiceField(
label=_("Zájmová témata"),
widget=forms.CheckboxSelectMultiple,
queryset=models.UserTopic.objects.all(),
required=False)
self.fields['regions'] = forms.ModelMultipleChoiceField(
label=_("Zájmové regiony"),
widget=forms.CheckboxSelectMultiple,
queryset=models.InterestRegion.objects.all(),
required=False)
class Meta:
model = models.UserForm
fields = ['skills','skills_note', 'topics','regions']
class UserFollowFormForm(ModelForm):
def __init__(self, *args, **kwargs):
super(UserFollowFormForm, self).__init__(*args, **kwargs)
self.fields['topics'] = forms.ModelMultipleChoiceField(
label=_("Zájmová témata"),
widget=forms.CheckboxSelectMultiple,
queryset=models.UserTopic.objects.all(),
required=False)
self.fields['regions'] = forms.ModelMultipleChoiceField(
label=_("Novinky zasílané e-mailem"),
widget=forms.CheckboxSelectMultiple,
queryset=models.InterestRegion.objects.all(),
required=False)
class Meta:
model = models.UserForm
fields = ['topics','regions']
class EmailVizitkaForm(forms.Form):
name = forms.CharField(label=_('Jméno'), max_length=50)
email = forms.CharField(label=_('E-mail'), max_length=50, required=False)
nazev_funkce = forms.CharField(label=_('Název funkce'), max_length=50, required=False)
soc_fb = forms.CharField(label=_('Facebook odkaz'), max_length=50, required=False)
soc_in = forms.CharField(label=_('LinkedIn odkaz'), max_length=50, required=False)
phone = forms.CharField(label=_('Telefon'), max_length=50, required=False)
class NewsletterForm(ModelForm):
class Meta:
model = models.Newsletter
exclude = []
class NewsMsgForm(ModelForm):
class Meta:
model = models.NewsMsg
fields = ['title', 'headerText', 'footerText',
'delivery_ts', 'sent_ts',
'testMailRecipients']
class NewsMsgBlockForm(ModelForm):
class Meta:
model = models.NewsMsgBlock
exclude = ['newsmsg']
class Euro2019InterestForm(ModelForm):
class Meta:
model = models.Euro2019Interest
exclude = ['createdStamp', 'dc_stamp']
def clean_postcode(self):
data = self.cleaned_data['postcode']
if data is not None:
if data < 10000 or data > 99999:
raise ValidationError(_('PSČ musí být číslo mezi 10000 a 99999.'), code='invalid')
return data
def clean_data_consent(self):
data = self.cleaned_data['data_consent']
if data is None or data == False:
raise ValidationError(_('Prosím, potvrďte souhlas se zpracováním osobních údajů.'), code='invalid')
return data
class CustomRecipientsForm(forms.Form):
recipients = forms.CharField(widget=forms.Textarea)