Commit 65147c52 by benjaoming

Inherit correct properties from predecessor and be more robust when returning…

Inherit correct properties from predecessor and be more robust when returning size and filename on images
parent 657831fe
...@@ -41,9 +41,9 @@ class RevisionForm(forms.ModelForm): ...@@ -41,9 +41,9 @@ class RevisionForm(forms.ModelForm):
if not self.instance.id: if not self.instance.id:
kwargs['commit'] = False kwargs['commit'] = False
revision = super(RevisionForm, self).save(*args, **kwargs) revision = super(RevisionForm, self).save(*args, **kwargs)
revision.inherit_predecessor(self.image, skip_image_file=True)
revision.set_from_request(self.request) revision.set_from_request(self.request)
revision.inherit_predecessor(self.image) #revision.save()
revision.save()
self.image.add_revision(self.instance, save=True) self.image.add_revision(self.instance, save=True)
return revision return revision
return super(SidebarForm, self).save(*args, **kwargs) return super(SidebarForm, self).save(*args, **kwargs)
......
...@@ -53,7 +53,11 @@ class ImageRevision(RevisionPluginRevision): ...@@ -53,7 +53,11 @@ class ImageRevision(RevisionPluginRevision):
def get_filename(self): def get_filename(self):
if self.image: if self.image:
return self.image.path.split('/')[-1] try:
return self.image.path.split('/')[-1]
except OSError:
pass
return None
def get_size(self): def get_size(self):
"""Used to retrieve the file size and not cause exceptions.""" """Used to retrieve the file size and not cause exceptions."""
...@@ -61,22 +65,27 @@ class ImageRevision(RevisionPluginRevision): ...@@ -61,22 +65,27 @@ class ImageRevision(RevisionPluginRevision):
return self.image.size return self.image.size
except ValueError: except ValueError:
return None return None
except OSError:
return None
def inherit_predecessor(self, image): def inherit_predecessor(self, image, skip_image_file=False):
""" """
Inherit certain properties from predecessor because it's very Inherit certain properties from predecessor because it's very
convenient. Remember to always call this method before convenient. Remember to always call this method before
setting properties :)""" setting properties :)"""
predecessor = image.current_revision.imagerevision predecessor = image.current_revision.imagerevision
self.plugin = predecessor.plugin self.plugin = predecessor.plugin
try:
self.image = predecessor.image
except IOError:
self.image = None
self.width = predecessor.width
self.height = predecessor.height
self.deleted = predecessor.deleted self.deleted = predecessor.deleted
self.locked = predecessor.locked self.locked = predecessor.locked
if not skip_image_file:
try:
self.image = predecessor.image
self.width = predecessor.width
self.height = predecessor.height
except IOError:
self.image = None
self.width = None
self.height = None
class Meta: class Meta:
verbose_name = _(u'image revision') verbose_name = _(u'image revision')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment