115 lines
3.8 KiB
Python
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
|