From becee54c03d8f3b6553103b39a100574c28c8a81 Mon Sep 17 00:00:00 2001 From: Matthew Tretter Date: Wed, 18 Jul 2012 22:24:39 -0400 Subject: [PATCH] Fix pickling of ImageSpecFieldFile Code now passes the test added in 118f6e4. Hopefully this will address #97. --- imagekit/models/fields/files.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/imagekit/models/fields/files.py b/imagekit/models/fields/files.py index e206377..d6f3dc2 100644 --- a/imagekit/models/fields/files.py +++ b/imagekit/models/fields/files.py @@ -11,7 +11,6 @@ class ImageSpecFieldFile(ImageFieldFile): def __init__(self, instance, field, attname): super(ImageSpecFieldFile, self).__init__(instance, field, None) self.attname = attname - self.storage = self.field.storage or self.source_file.storage @property def source_file(self): @@ -145,6 +144,25 @@ class ImageSpecFieldFile(ImageFieldFile): # it at least that one time. pass + @property + def storage(self): + return getattr(self, '_storage', None) or self.field.storage or self.source_file.storage + + @storage.setter + def storage(self, storage): + self._storage = storage + + def __getstate__(self): + return dict( + attname=self.attname, + instance=self.instance, + ) + + def __setstate__(self, state): + self.attname = state['attname'] + self.instance = state['instance'] + self.field = getattr(self.instance.__class__, self.attname) + class ProcessedImageFieldFile(ImageFieldFile): def save(self, name, content, save=True):