from django.utils.translation import ugettext_lazy as _
from catalogue.helpers import cached_in_field
from catalogue.models import Project
-from catalogue.tasks import refresh_instance
from dvcs import models as dvcs_models
project = models.ForeignKey(Project, null=True, blank=True)
# cache
- _short_html = models.TextField(null=True, blank=True, editable=False)
_new_publishable = models.NullBooleanField(editable=False)
_published = models.NullBooleanField(editable=False)
_changed = models.NullBooleanField(editable=False)
# Representing
# ============
- def __unicode__(self):
+ def __str__(self):
return self.title
@models.permalink
picture = WLPicture.from_bytes(
picture_xml.encode('utf-8'),
image_store=SelfImageStore)
- except ParseError, e:
+ except ParseError as e:
raise AssertionError(_('Invalid XML') + ': ' + str(e))
except NoDublinCore:
raise AssertionError(_('No Dublin Core found.'))
- except ValidationError, e:
+ except ValidationError as e:
raise AssertionError(_('Invalid Dublin Core') + ': ' + str(e))
valid_about = self.correct_about()
def publishable_error(self):
try:
return self.assert_publishable()
- except AssertionError, e:
+ except AssertionError as e:
return e
else:
return None
return not self.head.publishable
changed = cached_in_field('_changed')(is_changed)
- @cached_in_field('_short_html')
- def short_html(self):
- return render_to_string(
- 'catalogue/image_short.html', {'image': self})
-
- def refresh(self):
- """This should be done offline."""
- self.short_html
- self.single
- self.new_publishable
- self.published
-
def touch(self):
update = {
"_changed": self.is_changed(),
- "_short_html": None,
"_new_publishable": self.is_new_publishable(),
"_published": self.is_published(),
}
Image.objects.filter(pk=self.pk).update(**update)
- refresh_instance(self)
-
- def refresh(self):
- """This should be done offline."""
- self.changed
- self.short_html
-
# Publishing
# ==========