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(),

View File

@@ -33,6 +33,7 @@
<script type="text/javascript" src="{% static "charts/raphael-min.js" %}"></script>
<script type="text/javascript" src="{% static "charts/morris.js" %}"></script>
<script type="text/javascript" src="{% static "clipboard/clipboard.js" %}"></script>
<script type="text/javascript" src="{% static "cropper/cropper.js" %}"></script>
<script type="text/javascript" src="{% static "rrule/rrule.js" %}"></script>
<script type="text/javascript" src="{% static "pretixpresale/js/ui/questions.js" %}"></script>
<script type="text/javascript" src="{% static "pretixcontrol/js/jquery.qrcode.min.js" %}"></script>

View File

@@ -44,6 +44,9 @@
{% bootstrap_field form.valid_datetime_min layout="control" %}
{% bootstrap_field form.valid_datetime_max layout="control" %}
</div>
<div id="valid-file">
{% bootstrap_field form.valid_file_portrait layout="control" %}
</div>
<div id="answer-options">
<h3>{% trans "Answer options" %}</h3>
<noscript>