diff --git a/imagekit/models/fields/__init__.py b/imagekit/models/fields/__init__.py index a4629ea..f7c5237 100644 --- a/imagekit/models/fields/__init__.py +++ b/imagekit/models/fields/__init__.py @@ -4,29 +4,7 @@ from django.db.models.signals import post_init, post_save, post_delete from ...imagecache import get_default_image_cache_backend from ...generators import SpecFileGenerator from .files import ImageSpecFieldFile, ProcessedImageFieldFile - - -class BoundImageKitMeta(object): - def __init__(self, instance, spec_fields): - self.instance = instance - self.spec_fields = spec_fields - - @property - def spec_files(self): - return [getattr(self.instance, n) for n in self.spec_fields] - - -class ImageKitMeta(object): - def __init__(self, spec_fields=None): - self.spec_fields = spec_fields or [] - - def __get__(self, instance, owner): - if instance is None: - return self - else: - ik = BoundImageKitMeta(instance, self.spec_fields) - setattr(instance, '_ik', ik) - return ik +from .utils import ImageSpecFieldDescriptor, ImageKitMeta, BoundImageKitMeta class ImageSpecField(object): @@ -95,7 +73,7 @@ class ImageSpecField(object): get_default_image_cache_backend() def contribute_to_class(self, cls, name): - setattr(cls, name, _ImageSpecFieldDescriptor(self, name)) + setattr(cls, name, ImageSpecFieldDescriptor(self, name)) try: ik = getattr(cls, '_ik') except AttributeError: @@ -149,21 +127,6 @@ class ImageSpecField(object): ImageSpecField._update_source_hashes(instance) -class _ImageSpecFieldDescriptor(object): - def __init__(self, field, attname): - self.attname = attname - self.field = field - - def __get__(self, instance, owner): - if instance is None: - return self.field - else: - img_spec_file = ImageSpecFieldFile(instance, self.field, - self.attname) - setattr(instance, self.attname, img_spec_file) - return img_spec_file - - class ProcessedImageField(models.ImageField): """ ProcessedImageField is an ImageField that runs processors on the uploaded diff --git a/imagekit/models/fields/utils.py b/imagekit/models/fields/utils.py new file mode 100644 index 0000000..ce40bbb --- /dev/null +++ b/imagekit/models/fields/utils.py @@ -0,0 +1,39 @@ +from .files import ImageSpecFieldFile + + +class BoundImageKitMeta(object): + def __init__(self, instance, spec_fields): + self.instance = instance + self.spec_fields = spec_fields + + @property + def spec_files(self): + return [getattr(self.instance, n) for n in self.spec_fields] + + +class ImageKitMeta(object): + def __init__(self, spec_fields=None): + self.spec_fields = spec_fields or [] + + def __get__(self, instance, owner): + if instance is None: + return self + else: + ik = BoundImageKitMeta(instance, self.spec_fields) + setattr(instance, '_ik', ik) + return ik + + +class ImageSpecFieldDescriptor(object): + def __init__(self, field, attname): + self.attname = attname + self.field = field + + def __get__(self, instance, owner): + if instance is None: + return self.field + else: + img_spec_file = ImageSpecFieldFile(instance, self.field, + self.attname) + setattr(instance, self.attname, img_spec_file) + return img_spec_file