diff --git a/imagekit/models.py b/imagekit/models.py index 28efc75..b247b21 100755 --- a/imagekit/models.py +++ b/imagekit/models.py @@ -77,6 +77,13 @@ class ImageSpec(_ImageSpecMixin): def contribute_to_class(self, cls, name): setattr(cls, name, _ImageSpecDescriptor(self, name)) + try: + ik = getattr(cls, '_ik') + except AttributeError: + ik = type('ImageKitMeta', (object,), {'spec_file_names': []}) + setattr(cls, '_ik', ik) + ik.spec_file_names.append(name) + # Connect to the signals only once for this class. uid = '%s.%s' % (cls.__module__, cls.__name__) post_save.connect(_post_save_handler, diff --git a/imagekit/utils.py b/imagekit/utils.py index 29d9da2..3c9c7c3 100644 --- a/imagekit/utils.py +++ b/imagekit/utils.py @@ -13,16 +13,12 @@ def img_to_fobj(img, format, **kwargs): def get_spec_files(instance): - from imagekit.models import ImageSpecFile - spec_files = [] - for key in dir(instance): - try: - value = getattr(instance, key) - except AttributeError: - continue - if isinstance(value, ImageSpecFile): - spec_files.append(value) - return spec_files + try: + ik = getattr(instance, '_ik') + except AttributeError: + return [] + else: + return [getattr(instance, n) for n in ik.spec_file_names] def open_image(target):