X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/8d9f0f1b6f7607545370131c60738e37c3fd4d6f..445305ee25afd098e2fdc316a8cc8d8ecd80ac91:/apps/catalogue/models.py diff --git a/apps/catalogue/models.py b/apps/catalogue/models.py index 4dde4e0d8..2f4e7fe06 100644 --- a/apps/catalogue/models.py +++ b/apps/catalogue/models.py @@ -119,7 +119,7 @@ class Book(models.Model): return mark_safe(self._short_html) else: tags = self.tags.filter(~Q(category__in=('set', 'theme', 'book'))) - tags = [u'%s' % (tag.get_absolute_url(), tag.name) for tag in tags] + tags = [mark_safe(u'%s' % (tag.get_absolute_url(), tag.name)) for tag in tags] formats = [] if self.html_file: @@ -135,17 +135,28 @@ class Book(models.Model): if self.ogg_file: formats.append(u'OGG' % self.ogg_file.url) + formats = [mark_safe(format) for format in formats] + 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.""" @@ -229,11 +240,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) @@ -312,7 +326,7 @@ class Fragment(models.Model): if len(self._short_html): return mark_safe(self._short_html) else: - book_authors = [u'%s' % (tag.get_absolute_url(), tag.name) + book_authors = [mark_safe(u'%s' % (tag.get_absolute_url(), tag.name)) for tag in self.book.tags if tag.category == 'author'] self._short_html = unicode(render_to_string('catalogue/fragment_short.html',