Fix image size validation in product form

This commit is contained in:
Raphael Michel
2022-11-21 18:13:04 +01:00
parent a18eb3be70
commit b539f5e2f2

View File

@@ -38,7 +38,9 @@ from decimal import Decimal
from urllib.parse import urlencode from urllib.parse import urlencode
from django import forms from django import forms
from django.conf import settings
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.core.files.uploadedfile import UploadedFile
from django.db.models import Max from django.db.models import Max
from django.forms.formsets import DELETION_FIELD_NAME from django.forms.formsets import DELETION_FIELD_NAME
from django.urls import reverse from django.urls import reverse
@@ -61,7 +63,8 @@ from pretix.base.models import (
from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue from pretix.base.models.items import ItemAddOn, ItemBundle, ItemMetaValue
from pretix.base.signals import item_copy_data from pretix.base.signals import item_copy_data
from pretix.control.forms import ( from pretix.control.forms import (
ItemMultipleChoiceField, SplitDateTimeField, SplitDateTimePickerWidget, ItemMultipleChoiceField, SizeValidationMixin, SplitDateTimeField,
SplitDateTimePickerWidget,
) )
from pretix.control.forms.widgets import Select2 from pretix.control.forms.widgets import Select2
from pretix.helpers.models import modelcopy from pretix.helpers.models import modelcopy
@@ -584,6 +587,14 @@ class ItemUpdateForm(I18nModelForm):
) )
return d return d
def clean_picture(self):
value = self.cleaned_data.get('picture')
if isinstance(value, UploadedFile) and value.size > settings.FILE_UPLOAD_MAX_SIZE_IMAGE:
raise forms.ValidationError(_("Please do not upload files larger than {size}!").format(
size=SizeValidationMixin._sizeof_fmt(settings.FILE_UPLOAD_MAX_SIZE_IMAGE)
))
return value
class Meta: class Meta:
model = Item model = Item
localized_fields = '__all__' localized_fields = '__all__'