From b539f5e2f28768f7ff9fe6b6841097275a21611d Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 21 Nov 2022 18:13:04 +0100 Subject: [PATCH] Fix image size validation in product form --- src/pretix/control/forms/item.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/pretix/control/forms/item.py b/src/pretix/control/forms/item.py index 24b628346..3dbaae860 100644 --- a/src/pretix/control/forms/item.py +++ b/src/pretix/control/forms/item.py @@ -38,7 +38,9 @@ from decimal import Decimal from urllib.parse import urlencode from django import forms +from django.conf import settings from django.core.exceptions import ValidationError +from django.core.files.uploadedfile import UploadedFile from django.db.models import Max from django.forms.formsets import DELETION_FIELD_NAME 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.signals import item_copy_data from pretix.control.forms import ( - ItemMultipleChoiceField, SplitDateTimeField, SplitDateTimePickerWidget, + ItemMultipleChoiceField, SizeValidationMixin, SplitDateTimeField, + SplitDateTimePickerWidget, ) from pretix.control.forms.widgets import Select2 from pretix.helpers.models import modelcopy @@ -584,6 +587,14 @@ class ItemUpdateForm(I18nModelForm): ) 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: model = Item localized_fields = '__all__'