diff --git a/imagekit/models/fields/__init__.py b/imagekit/models/fields/__init__.py index 04a6546..767374f 100644 --- a/imagekit/models/fields/__init__.py +++ b/imagekit/models/fields/__init__.py @@ -93,7 +93,7 @@ class ProcessedImageField(models.ImageField, SpecHostField): def __init__(self, processors=None, format=None, options=None, verbose_name=None, name=None, width_field=None, height_field=None, - autoconvert=True, spec=None, spec_id=None, **kwargs): + autoconvert=None, spec=None, spec_id=None, **kwargs): """ The ProcessedImageField constructor accepts all of the arguments that the :class:`django.db.models.ImageField` constructor accepts, as well @@ -101,6 +101,10 @@ class ProcessedImageField(models.ImageField, SpecHostField): :class:`imagekit.models.ImageSpecField`. """ + # if spec is not provided then autoconvert will be True by default + if spec is None and autoconvert is None: + autoconvert = True + SpecHost.__init__(self, processors=processors, format=format, options=options, autoconvert=autoconvert, spec=spec, spec_id=spec_id) diff --git a/tests/models.py b/tests/models.py index 5667cad..0f6bd0c 100644 --- a/tests/models.py +++ b/tests/models.py @@ -1,10 +1,17 @@ from django.db import models +from imagekit import ImageSpec from imagekit.models import ProcessedImageField from imagekit.models import ImageSpecField from imagekit.processors import Adjust, ResizeToFill, SmartCrop +class Thumbnail(ImageSpec): + processors = [ResizeToFill(100, 60)] + format = 'JPEG' + options = {'quality': 60} + + class ImageModel(models.Model): image = models.ImageField(upload_to='b') @@ -27,6 +34,10 @@ class ProcessedImageFieldModel(models.Model): options={'quality': 90}, upload_to='p') +class ProcessedImageFieldWithSpecModel(models.Model): + processed = ProcessedImageField(spec=Thumbnail, upload_to='p') + + class CountingCacheFileStrategy(object): def __init__(self): self.on_existence_required_count = 0 diff --git a/tests/test_fields.py b/tests/test_fields.py index 6afb6cf..96e7337 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -5,7 +5,9 @@ from imagekit import forms as ikforms from imagekit.processors import SmartCrop from nose.tools import eq_ from . import imagegenerators # noqa -from .models import ProcessedImageFieldModel, ImageModel +from .models import (ProcessedImageFieldModel, + ProcessedImageFieldWithSpecModel, + ImageModel) from .utils import get_image_file @@ -19,6 +21,16 @@ def test_model_processedimagefield(): eq_(instance.processed.height, 50) +def test_model_processedimagefield_with_spec(): + instance = ProcessedImageFieldWithSpecModel() + file = File(get_image_file()) + instance.processed.save('whatever.jpeg', file) + instance.save() + + eq_(instance.processed.width, 100) + eq_(instance.processed.height, 60) + + def test_form_processedimagefield(): class TestForm(forms.ModelForm): image = ikforms.ProcessedImageField(spec_id='tests:testform_image',