1
0
Fork 0
foerderbarometer/input/forms.py

105 lines
3.6 KiB
Python
Raw Normal View History

2020-09-29 07:54:31 +00:00
from django.db import models
2020-10-20 11:16:03 +00:00
from django.forms import ModelForm, DateField, ChoiceField, RadioSelect, BooleanField
2020-09-29 10:16:10 +00:00
from django.contrib.admin.widgets import AdminDateWidget
from django.utils.html import format_html
2020-09-29 10:16:10 +00:00
from .models import Project, Volunteer, ConcreteVolunteer, Extern, ConcreteExtern, IFG, Library, TYPE_CHOICES,\
HonoraryCertificate, Travel, Email, Literature, List,\
BusinessCard
2020-10-27 10:00:58 +00:00
from .settings import DATAPROTECTION, FOERDERRICHTLINIEN, NUTZUNGSBEDINGUNGEN
2020-09-29 07:54:31 +00:00
2020-11-17 15:11:10 +00:00
class FdbForm(ModelForm):
'''this base class provides the required css class for all forms'''
required_css_class = 'required'
class ProjectForm(FdbForm):
2020-09-29 10:16:10 +00:00
# start = DateField(widget=AdminDateWidget())
2020-09-29 10:16:10 +00:00
2020-09-29 07:54:31 +00:00
class Meta:
model = Project
exclude = ('pid', 'project_of_year', 'finance_id','granted', 'granted_date', 'realname', 'email',\
2021-04-12 11:44:45 +00:00
'end_mail_send', 'status', 'persons', 'survey_mail_date')
widgets = {'start': AdminDateWidget(),
'end': AdminDateWidget(),}
2020-10-01 08:51:19 +00:00
2020-11-17 15:11:10 +00:00
class ExternForm(FdbForm):
2020-10-01 08:51:19 +00:00
choice = ChoiceField(choices=TYPE_CHOICES.items(), widget=RadioSelect,
2020-10-19 12:46:58 +00:00
label='Was möchtest Du beantragen?')
2020-10-01 08:51:19 +00:00
check = BooleanField(required=True,
label=format_html("Ich stimme den <a href='{}' target='_blank' rel='noopener'>Datenschutzbestimmungen</a> und den <a href='{}' target='_blank' rel='noopener'>Förderrichtlinen</a> zu",
DATAPROTECTION, FOERDERRICHTLINIEN))
2020-10-20 11:16:03 +00:00
2020-10-01 08:51:19 +00:00
class Meta:
2021-07-06 11:00:34 +00:00
model = ConcreteExtern
2021-04-12 11:44:45 +00:00
exclude = ('granted', 'granted_date', 'survey_mail_send', 'service_id', 'survey_mail_date')
2020-10-01 08:51:19 +00:00
INTERN_CHOICES = {'PRO': 'Projektsteckbrief',
'HON': 'Ehrenamtsbescheinigung, Akkreditierung oder Redaktionsbestätigung',
'TRAV': 'Reisekostenerstattung'}
2020-10-21 07:54:12 +00:00
2020-11-17 15:11:10 +00:00
class InternForm(FdbForm):
choice = ChoiceField(choices = INTERN_CHOICES.items(), widget=RadioSelect,
2020-10-21 07:54:12 +00:00
label = 'Was möchtest Du eingeben?')
class Meta:
model = ConcreteVolunteer
2021-04-12 11:44:45 +00:00
exclude = ('granted', 'granted_date', 'survey_mail_send', 'survey_mail_date')
2020-10-21 07:54:12 +00:00
2020-11-17 15:11:10 +00:00
class TravelForm(FdbForm):
2020-11-03 11:56:40 +00:00
# TODO: add some javascript to show/hide other-field
2020-10-26 10:38:56 +00:00
class Meta:
model = Travel
2021-04-12 11:44:45 +00:00
exclude = ('granted', 'granted_date', 'survey_mail_send', 'realname', 'email', 'survey_mail_date')
2020-11-02 13:04:01 +00:00
widgets = {'checkin': AdminDateWidget(),
'checkout': AdminDateWidget(),}
2020-10-21 07:54:12 +00:00
2020-11-17 15:11:10 +00:00
class LibraryForm(FdbForm):
2020-10-19 11:29:36 +00:00
2020-10-01 08:51:19 +00:00
class Meta:
model = Library
fields = ['cost', 'library', 'duration', 'notes']
2020-10-01 08:51:19 +00:00
2020-11-18 17:02:23 +00:00
class HonoraryCertificateForm(FdbForm):
class Meta:
model = HonoraryCertificate
fields = ['request_url', 'project']
2020-11-17 15:11:10 +00:00
class IFGForm(FdbForm):
2020-10-01 08:51:19 +00:00
class Meta:
2020-10-01 10:08:02 +00:00
model = IFG
fields = ['cost', 'url', 'notes']
2020-10-21 07:54:12 +00:00
2020-10-27 10:00:58 +00:00
class CheckForm(FdbForm):
"""Baseclass for all classes which need a check for Nutzungsbedingungen"""
2020-11-18 17:02:23 +00:00
check = BooleanField(required=True,
label=format_html("Ich stimme den <a href='{}'>Nutzungsbedingungen</a> zu",
NUTZUNGSBEDINGUNGEN))
class LiteratureForm(CheckForm):
class Meta:
model = Literature
fields = ['cost', 'info', 'source', 'notes']
class EmailForm(CheckForm):
2020-10-27 10:00:58 +00:00
# TODO: add some javascript to show/hide other-field
class Meta:
model = Email
fields = ['domain', 'address', 'other']
class BusinessCardForm(CheckForm):
class Meta:
model = BusinessCard
fields = ['project', 'data', 'variant', 'sent_to']
class ListForm(CheckForm):
class Meta:
model = List
fields = ['domain', 'address']