Files
kasu/src/events/forms.py
xeniac 3efc4335bb Fixed: ugettext has been deprecated
Fixed: Multiple Upload for Eventpics
2023-06-11 10:10:29 +02:00

78 lines
2.3 KiB
Python

"""Django Forms to administrate the event content on the frontend."""
from django import forms
from django.contrib.auth import get_user_model
from django.utils.translation import gettext as _
from . import models
class ClearableMultipleFileInput(forms.widgets.ClearableFileInput):
allow_multiple_selected = True
accept = "image/jpg"
class MultipleFileField(forms.FileField):
def __init__(self, *args, **kwargs):
kwargs.setdefault("widget", ClearableMultipleFileInput())
super().__init__(*args, **kwargs)
def clean(self, data, initial=None):
single_file_clean = super().clean
if isinstance(data, (list, tuple)):
result = [single_file_clean(d, initial) for d in data]
else:
result = single_file_clean(data, initial)
return result
class PhotoUploadForm(forms.Form):
"""Form to upload multiple photos to a single event.
TODO: Check multiple upload
"""
error_css_class = 'error'
required_css_class = 'required'
photographer = forms.ModelChoiceField(get_user_model().objects.all(),
required=True, )
event = forms.ModelChoiceField(models.Event.objects.all(), required=True, )
upload = MultipleFileField(
label=_('Images'),
required=True,
)
class EditPhotoForm(forms.ModelForm):
"""From to edit the metadata of a photo."""
error_css_class = 'error'
required_css_class = 'required'
class Meta(object):
"""Metadata to localize and customize the ModelForm."""
model = models.Photo
fields = ('event', 'name', 'description', 'photographer',
'created_date', 'on_startpage')
class EventForm(forms.ModelForm):
"""Form to add or edit an event."""
error_css_class = 'error'
required_css_class = 'required'
start = forms.SplitDateTimeField(
label=_('start'), required=True,
)
end = forms.SplitDateTimeField(
label=_('end'), required=False,
)
class Meta(object):
"""Metadata to localize and customize the ModelForm."""
model = models.Event
exclude = ('event_count', 'event_series',)
EventSeriesFormset = forms.inlineformset_factory( # Ignore PyLintBear (C0103)
models.Event,
models.Event,
fields=('start', 'end'),
form=EventForm)