X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/b7d5131321533374cdcb85542ef4dcb53269863d..263e2a71c685149e406d7bee1de93b362970a88f:/apps/catalogue/models.py diff --git a/apps/catalogue/models.py b/apps/catalogue/models.py index 58025fabd..ac9a14cb1 100644 --- a/apps/catalogue/models.py +++ b/apps/catalogue/models.py @@ -1,4 +1,7 @@ # -*- coding: utf-8 -*- +# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# from django.db import models from django.db.models import permalink, Q from django.utils.translation import ugettext_lazy as _ @@ -108,7 +111,6 @@ class Book(models.Model): objects = models.Manager() tagged = managers.ModelTaggedItemManager(Tag) tags = managers.TagDescriptor(Tag) - @property def name(self): @@ -139,15 +141,24 @@ class Book(models.Model): self._short_html = unicode(render_to_string('catalogue/book_short.html', {'book': self, 'tags': tags, 'formats': formats})) - self.save() + self.save(reset_short_html=False) return mark_safe(self._short_html) - def save(self, force_insert=False, force_update=False): + def save(self, force_insert=False, force_update=False, reset_short_html=True): + if reset_short_html: + # Reset _short_html during save + self._short_html = '' + + book = super(Book, self).save(force_insert, force_update) + if self.mp3_file: + print self.mp3_file, self.mp3_file.path extra_info = self.get_extra_info_value() extra_info.update(self.get_mp3_info()) self.set_extra_info_value(extra_info) - return super(Book, self).save(force_insert, force_update) + book = super(Book, self).save(force_insert, force_update) + + return book def get_mp3_info(self): """Retrieves artist and director names from audio ID3 tags.""" @@ -231,11 +242,14 @@ class Book(models.Model): if hasattr(book_info, 'parts'): for n, part_url in enumerate(book_info.parts): base, slug = part_url.rsplit('/', 1) - child_book = Book.objects.get(slug=slug) - child_book.parent = book - child_book.parent_number = n - child_book.save() - + try: + child_book = Book.objects.get(slug=slug) + child_book.parent = book + child_book.parent_number = n + child_book.save() + except Book.DoesNotExist, e: + raise Book.DoesNotExist(u'Book with slug = "%s" does not exist.' % slug) + book_descendants = list(book.children.all()) while len(book_descendants) > 0: child_book = book_descendants.pop(0)