Add Question.valid_file_portrait as well as crop editor for images

This commit is contained in:
Raphael Michel
2021-04-19 15:39:38 +02:00
parent 638b856f42
commit 24bccf8b9c
24 changed files with 4239 additions and 21 deletions

View File

@@ -178,8 +178,7 @@ class CachedFileInput(forms.ClearableFileInput):
return ctx
class SizeFileField(forms.FileField):
class SizeValidationMixin:
def __init__(self, *args, **kwargs):
self.max_size = kwargs.pop("max_size", None)
super().__init__(*args, **kwargs)
@@ -196,13 +195,12 @@ class SizeFileField(forms.FileField):
data = super().clean(*args, **kwargs)
if isinstance(data, UploadedFile) and self.max_size and data.size > self.max_size:
raise forms.ValidationError(_("Please do not upload files larger than {size}!").format(
size=SizeFileField._sizeof_fmt(self.max_size)
size=SizeValidationMixin._sizeof_fmt(self.max_size)
))
return data
class ExtFileField(SizeFileField):
widget = ClearableBasenameFileInput
class ExtValidationMixin:
def __init__(self, *args, **kwargs):
ext_whitelist = kwargs.pop("ext_whitelist")
@@ -220,6 +218,14 @@ class ExtFileField(SizeFileField):
return data
class SizeFileField(SizeValidationMixin, forms.FileField):
pass
class ExtFileField(ExtValidationMixin, SizeFileField):
widget = ClearableBasenameFileInput
class CachedFileField(ExtFileField):
widget = CachedFileInput

View File

@@ -153,6 +153,7 @@ class QuestionForm(I18nModelForm):
'valid_datetime_max',
'valid_date_min',
'valid_date_max',
'valid_file_portrait',
]
widgets = {
'valid_datetime_min': SplitDateTimePickerWidget(),