mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-25 08:46:10 -06:00
adding conversion for ImageAttachment
This commit is contained in:
parent
48d57d3a35
commit
61391feb78
@ -15,7 +15,7 @@ from django.urls import reverse
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
try:
|
||||
from pillow_heif import HeifImageFile, HeifImagePlugin
|
||||
from pi_heif import HeifImageFile, HeifImagePlugin
|
||||
except ImportError:
|
||||
HeifImagePlugin = HeifImageFile = None
|
||||
|
||||
@ -29,6 +29,7 @@ from utilities.choices import ColorChoices
|
||||
from utilities.fields import ColorField, NaturalOrderingField
|
||||
from .device_components import *
|
||||
|
||||
|
||||
__all__ = (
|
||||
'Device',
|
||||
'DeviceRole',
|
||||
|
@ -1,11 +1,14 @@
|
||||
import json
|
||||
import sys
|
||||
import uuid
|
||||
from io import BytesIO
|
||||
|
||||
from django.contrib import admin
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.cache import cache
|
||||
from django.core.files.uploadedfile import InMemoryUploadedFile
|
||||
from django.core.validators import ValidationError
|
||||
from django.db import models
|
||||
from django.http import HttpResponse
|
||||
@ -15,6 +18,11 @@ from django.utils.formats import date_format
|
||||
from rest_framework.utils.encoders import JSONEncoder
|
||||
import django_rq
|
||||
|
||||
try:
|
||||
from pi_heif import HeifImageFile, HeifImagePlugin
|
||||
except ImportError:
|
||||
HeifImagePlugin = HeifImageFile = None
|
||||
|
||||
from extras.choices import *
|
||||
from extras.constants import *
|
||||
from extras.conditions import ConditionSet
|
||||
@ -386,6 +394,17 @@ class ImageAttachment(WebhooksMixin, ChangeLoggedModel):
|
||||
filename = self.image.name.rsplit('/', 1)[-1]
|
||||
return filename.split('_', 2)[2]
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if HeifImagePlugin is not None and self.image:
|
||||
if isinstance(self.image.file, InMemoryUploadedFile) and isinstance(self.image.file.image, HeifImageFile):
|
||||
output_stream = BytesIO()
|
||||
self.image.file.image.save(output_stream, format="JPEG")
|
||||
output_stream.seek(0)
|
||||
self.image.name = "%s.jpg" % self.image.file.name.split('.')[0]
|
||||
self.image.file = InMemoryUploadedFile(output_stream, 'ImageField', self.image.name,
|
||||
'image/jpeg', sys.getsizeof(output_stream), None)
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
def delete(self, *args, **kwargs):
|
||||
|
||||
_name = self.image.name
|
||||
|
@ -24,6 +24,7 @@ import django
|
||||
from django.utils.encoding import force_str
|
||||
django.utils.encoding.force_text = force_str
|
||||
|
||||
|
||||
#
|
||||
# Environment setup
|
||||
#
|
||||
|
@ -39,4 +39,4 @@ jsonschema==3.2.0
|
||||
swagger-spec-validator==2.7.6
|
||||
|
||||
# Pillow's plugin for HEIF image format
|
||||
pillow-heif==0.7.0
|
||||
pi-heif==0.7.0
|
||||
|
Loading…
Reference in New Issue
Block a user