Files
fet2020/fet2020/posts/forms.py
2020-09-18 13:37:50 +00:00

115 lines
3.8 KiB
Python

from django import forms
from django.utils.translation import gettext_lazy as _
from ckeditor_uploader.widgets import CKEditorUploadingWidget
from .models import Post, Event, News, FetMeeting
class MyPostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['title', 'subtitle', 'tags', 'image', 'body', 'slug', 'author', 'public_date']
widgets = {'body': CKEditorUploadingWidget(config_name='default')}
class Media:
js = (
'js/auto_slug.js', # automatic slag completion via ajax
'js/tag_completion.js', # to get a list for tag autocompletion via ajax
)
class MyNewsForm(MyPostForm):
class Meta:
model = News
fields = [
'title', 'subtitle', 'tags', 'image', 'body', 'slug', 'author', 'public_date',
'is_pinned', 'is_hidden',
]
labels = {
'title': _('Titel des Posts'),
'image': _('Hintergrundbild des Posts'),
'body': _('Beschreibung des Posts'),
'author': _('Autor'),
'public_date': _('Veröffentlichung'),
'is_pinned': _('Post anheften'),
'is_hidden': _('Post verstecken'),
}
help_texts = {
'is_pinned': _(
'Dieser Post soll an die Startseite als erster Post angeheftet werden.'
),
'is_hidden': _(
'Dieser Post soll im News Feed nicht auftauchen, z.B. Impressum.'
),
}
widgets = {'body': CKEditorUploadingWidget(config_name='default')}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # to get the self.fields set
class MyEventForm(MyPostForm):
class Meta:
model = Event
fields = [
'title', 'subtitle', 'tags', 'image', 'body', 'event_start', 'event_end',
'event_place', 'slug', 'author', 'public_date', 'is_pinned',
]
labels = {
'title': _('Titel des Events'),
'image': _('Hintergrundbild des Posts'),
'body': _('Beschreibung des Events'),
'event_start': _('Start des Events'),
'event_end': _('Ende des Events'),
'event_place': _('Ort des Events'),
'author': _('Autor'),
'public_date': _('Veröffentlichung'),
'is_pinned': _('Event anheften'),
}
help_texts = {
'is_pinned': _(
'Dieses Event soll an die Startseite als erster Post angeheftet werden.'
),
}
widgets = {'body': CKEditorUploadingWidget(config_name='default')}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # to get the self.fields set
self.fields['event_start'].required = True
self.fields['event_end'].required = True
if 'event_place' in self.fields:
self.fields['event_place'].required = True
class MyFetMeetingForm(MyEventForm):
# agenda_html = forms.CharField(widget = forms.TextInput())
class Meta:
model = FetMeeting
fields = ['event_start', 'event_end', 'tags', 'has_agenda', 'has_protocol']
labels = {
'event_start': _('Start der Sitzung'),
'event_end': _('Ende der Sitzung'),
'has_agenda': _('Agenda'),
'has_protocol': _('Protokoll'),
}
help_texts = {
'has_agenda': _('Agenda zur Sitzung hinzufügen.'),
'has_protocol': _('Protokoll zur Sitzung hinzufügen.'),
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # to get the self.fields set
self.fields['event_start'].required = True
self.fields['event_end'].required = False
self.fields['has_agenda'].initial = True
self.fields['has_protocol'].initial = True