mirror of
https://github.com/Hopiu/django-imagekit.git
synced 2026-03-16 21:30:23 +00:00
Extract suggest_extension util from generator
This commit is contained in:
parent
6e4a8d1b58
commit
8044b97a33
4 changed files with 32 additions and 29 deletions
|
|
@ -7,9 +7,8 @@ from django.core.files.base import ContentFile
|
|||
from django.utils.encoding import smart_str, smart_unicode
|
||||
|
||||
from .processors import ProcessorPipeline, AutoConvert
|
||||
from .utils import img_to_fobj, open_image, \
|
||||
format_to_extension, extension_to_format, UnknownFormatError, \
|
||||
UnknownExtensionError
|
||||
from .utils import (img_to_fobj, open_image, extension_to_format,
|
||||
UnknownExtensionError)
|
||||
|
||||
|
||||
class SpecFile(ContentFile):
|
||||
|
|
@ -76,28 +75,6 @@ class SpecFileGenerator(object):
|
|||
content = SpecFile(filename, imgfile.read())
|
||||
return img, content
|
||||
|
||||
def suggest_extension(self, name):
|
||||
original_extension = os.path.splitext(name)[1]
|
||||
try:
|
||||
suggested_extension = format_to_extension(self.format)
|
||||
except UnknownFormatError:
|
||||
extension = original_extension
|
||||
else:
|
||||
if suggested_extension.lower() == original_extension.lower():
|
||||
extension = original_extension
|
||||
else:
|
||||
try:
|
||||
original_format = extension_to_format(original_extension)
|
||||
except UnknownExtensionError:
|
||||
extension = suggested_extension
|
||||
else:
|
||||
# If the formats match, give precedence to the original extension.
|
||||
if self.format.lower() == original_format.lower():
|
||||
extension = original_extension
|
||||
else:
|
||||
extension = suggested_extension
|
||||
return extension
|
||||
|
||||
def generate_file(self, filename, source_file, save=True):
|
||||
"""
|
||||
Generates a new image file by processing the source file and returns
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ from ...imagecache import get_default_image_cache_backend
|
|||
from ...generators import SpecFileGenerator
|
||||
from .files import ImageSpecFieldFile, ProcessedImageFieldFile
|
||||
from .utils import ImageSpecFileDescriptor, ImageKitMeta, BoundImageKitMeta
|
||||
from ...utils import suggest_extension
|
||||
|
||||
|
||||
class ImageSpecField(object):
|
||||
|
|
@ -169,7 +170,7 @@ class ProcessedImageField(models.ImageField):
|
|||
filename = os.path.normpath(self.storage.get_valid_name(
|
||||
os.path.basename(filename)))
|
||||
name, ext = os.path.splitext(filename)
|
||||
ext = self.generator.suggest_extension(filename)
|
||||
ext = suggest_extension(filename, self.generator.format)
|
||||
return u'%s%s' % (name, ext)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import datetime
|
|||
from django.db.models.fields.files import ImageField, ImageFieldFile
|
||||
from django.utils.encoding import force_unicode, smart_str
|
||||
|
||||
from ...utils import suggest_extension
|
||||
|
||||
|
||||
class ImageSpecFieldFile(ImageFieldFile):
|
||||
def __init__(self, instance, field, attname):
|
||||
|
|
@ -118,9 +120,8 @@ class ImageSpecFieldFile(ImageFieldFile):
|
|||
raise Exception('No cache_to or default_cache_to value'
|
||||
' specified')
|
||||
if callable(cache_to):
|
||||
suggested_extension = \
|
||||
self.field.generator.suggest_extension(
|
||||
self.source_file.name)
|
||||
suggested_extension = suggest_extension(
|
||||
self.source_file.name, self.field.generator.format)
|
||||
new_filename = force_unicode(
|
||||
datetime.datetime.now().strftime(
|
||||
smart_str(cache_to(self.instance,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import os
|
||||
import tempfile
|
||||
import types
|
||||
|
||||
|
|
@ -165,3 +166,26 @@ def validate_app_cache(apps, force_revalidation=False):
|
|||
if force_revalidation:
|
||||
f.invalidate()
|
||||
f.validate()
|
||||
|
||||
|
||||
def suggest_extension(name, format):
|
||||
original_extension = os.path.splitext(name)[1]
|
||||
try:
|
||||
suggested_extension = format_to_extension(format)
|
||||
except UnknownFormatError:
|
||||
extension = original_extension
|
||||
else:
|
||||
if suggested_extension.lower() == original_extension.lower():
|
||||
extension = original_extension
|
||||
else:
|
||||
try:
|
||||
original_format = extension_to_format(original_extension)
|
||||
except UnknownExtensionError:
|
||||
extension = suggested_extension
|
||||
else:
|
||||
# If the formats match, give precedence to the original extension.
|
||||
if format.lower() == original_format.lower():
|
||||
extension = original_extension
|
||||
else:
|
||||
extension = suggested_extension
|
||||
return extension
|
||||
|
|
|
|||
Loading…
Reference in a new issue