Merge pull request #541 from eventcally/issues/540

Handle error in Image.save #540
This commit is contained in:
Daniel Grams 2023-09-05 22:40:19 +02:00 committed by GitHub
commit bb8caad31f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -34,13 +34,20 @@ class Base64ImageForm(BaseImageForm):
def validate(self, extra_validators=None):
result = super().validate(extra_validators)
self.image_base64.encoding_format = None
self.image_base64.image_data = None
if self.image_base64.data:
image = get_image_from_base64_str(self.image_base64.data)
try:
image = get_image_from_base64_str(self.image_base64.data)
validate_image(image)
except ValueError as e:
resize_image_to_max(image)
self.image_base64.encoding_format = get_mime_type_from_image(image)
self.image_base64.image_data = get_bytes_from_image(image)
except Exception as e:
msg = str(e)
self.image_base64.encoding_format = None
self.image_base64.image_data = None
self.image_base64.errors.append(msg)
result = False
@ -49,12 +56,9 @@ class Base64ImageForm(BaseImageForm):
def populate_obj(self, obj):
super(BaseImageForm, self).populate_obj(obj)
if self.image_base64.data:
image = get_image_from_base64_str(self.image_base64.data)
validate_image(image)
resize_image_to_max(image)
obj.encoding_format = get_mime_type_from_image(image)
obj.data = get_bytes_from_image(image)
if self.image_base64.image_data and self.image_base64.encoding_format:
obj.data = self.image_base64.image_data
obj.encoding_format = self.image_base64.encoding_format
else:
obj.data = None
obj.encoding_format = None