django-imagekit/tests/models.py

73 lines
2.1 KiB
Python
Raw Permalink Normal View History

2012-02-18 06:56:17 +00:00
from django.db import models
from imagekit import ImageSpec
2013-01-24 03:35:57 +00:00
from imagekit.models import ProcessedImageField
from imagekit.models import ImageSpecField
2013-01-24 03:07:31 +00:00
from imagekit.processors import Adjust, ResizeToFill, SmartCrop
2012-02-18 06:56:17 +00:00
class Thumbnail(ImageSpec):
processors = [ResizeToFill(100, 60)]
format = 'JPEG'
options = {'quality': 60}
class ImageModel(models.Model):
image = models.ImageField(upload_to='b')
2012-02-18 06:56:17 +00:00
class Photo(models.Model):
original_image = models.ImageField(upload_to='photos')
# Implicit source field
2012-02-18 06:56:17 +00:00
thumbnail = ImageSpecField([Adjust(contrast=1.2, sharpness=1.1),
ResizeToFill(50, 50)], format='JPEG',
options={'quality': 90})
2012-02-18 06:56:17 +00:00
smartcropped_thumbnail = ImageSpecField([Adjust(contrast=1.2,
sharpness=1.1), SmartCrop(50, 50)], source='original_image',
2012-02-18 06:56:17 +00:00
format='JPEG', options={'quality': 90})
2013-01-24 03:35:57 +00:00
class ProcessedImageFieldModel(models.Model):
processed = ProcessedImageField([SmartCrop(50, 50)], format='JPEG',
options={'quality': 90}, upload_to='p')
class ProcessedImageFieldWithSpecModel(models.Model):
processed = ProcessedImageField(spec=Thumbnail, upload_to='p')
2013-02-10 20:41:24 +00:00
class CountingCacheFileStrategy(object):
def __init__(self):
self.on_existence_required_count = 0
self.on_content_required_count = 0
self.on_source_saved_count = 0
2013-02-10 20:41:24 +00:00
def on_existence_required(self, file):
self.on_existence_required_count += 1
def on_content_required(self, file):
self.on_content_required_count += 1
2013-02-10 20:41:24 +00:00
def on_source_saved(self, file):
self.on_source_saved_count += 1
2013-02-10 20:41:24 +00:00
2012-02-18 06:56:17 +00:00
class AbstractImageModel(models.Model):
original_image = models.ImageField(upload_to='photos')
2013-02-10 20:41:24 +00:00
abstract_class_spec = ImageSpecField(source='original_image',
format='JPEG',
cachefile_strategy=CountingCacheFileStrategy())
2012-02-18 06:56:17 +00:00
class Meta:
abstract = True
2013-02-10 20:41:24 +00:00
class ConcreteImageModel(AbstractImageModel):
pass
class ConcreteImageModelSubclass(ConcreteImageModel):
pass