X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/08bd2b6b6557481ecbb64b2f07db0d3d9784d9bb..aae232dcf008ab39db553bc1b20573fa00e3b191:/apps/catalogue/models/book.py diff --git a/apps/catalogue/models/book.py b/apps/catalogue/models/book.py index 9f7803dcd..83bc040c6 100644 --- a/apps/catalogue/models/book.py +++ b/apps/catalogue/models/book.py @@ -44,6 +44,9 @@ class Book(models.Model): cover = EbookField('cover', _('cover'), upload_to=book_upload_path('jpg'), null=True, blank=True) + # Cleaner version of cover for thumbs + cover_thumb = EbookField('cover_thumb', _('cover thumbnail'), + upload_to=book_upload_path('th.jpg'), null=True, blank=True) ebook_formats = constants.EBOOK_FORMATS formats = ebook_formats + ['html', 'xml'] @@ -97,6 +100,12 @@ class Book(models.Model): def name(self): return self.title + def language_code(self): + return constants.LANGUAGES_3TO2.get(self.language, self.language) + + def language_name(self): + return dict(settings.LANGUAGES).get(self.language_code(), "") + def book_tag_slug(self): return ('l-' + self.slug)[:120] @@ -313,6 +322,7 @@ class Book(models.Model): tasks.fix_tree_tags.delay(book) if 'cover' not in dont_build: book.cover.build_delay() + book.cover_thumb.build_delay() # No saves behind this point. @@ -395,12 +405,17 @@ class Book(models.Model): if not self.cover_info(inherit=False): if 'cover' not in app_settings.DONT_BUILD: self.cover.build_delay() + self.cover_thumb.build_delay() for format_ in constants.EBOOK_FORMATS_WITH_COVERS: if format_ not in app_settings.DONT_BUILD: getattr(self, '%s_file' % format_).build_delay() for child in self.children.all(): child.parent_cover_changed() + def other_versions(self): + """Find other versions (i.e. in other languages) of the book.""" + return type(self).objects.filter(common_slug=self.common_slug).exclude(pk=self.pk) + def related_info(self): """Keeps info about related objects (tags, media) in cache field.""" if self._related_info is not None: @@ -530,7 +545,7 @@ class Book(models.Model): """ # get relevant books and their tags objects = cls.tagged.with_all(tags) - parents = objects.filter(html_file='').only('slug') + parents = objects.exclude(children=None).only('slug') # eliminate descendants l_tags = Tag.objects.filter(category='book', slug__in=[book.book_tag_slug() for book in parents.iterator()])