X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/76849e4b3dcc3305edbe86b794b04a0bf4a8467c..dbb1ae2cf25105f7a3831961b08386a1326baef8:/apps/catalogue/models/book.py diff --git a/apps/catalogue/models/book.py b/apps/catalogue/models/book.py index 64dd498d7..bd7d7e49a 100644 --- a/apps/catalogue/models/book.py +++ b/apps/catalogue/models/book.py @@ -100,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] @@ -122,7 +128,7 @@ class Book(models.Model): if self.has_media(type_): if type_ in Book.formats: return getattr(self, "%s_file" % type_) - else: + else: return self.media.filter(type=type_) else: return None @@ -134,7 +140,7 @@ class Book(models.Model): def get_ogg(self): return self.get_media("ogg") def get_daisy(self): - return self.get_media("daisy") + return self.get_media("daisy") def reset_short_html(self): if self.id is None: @@ -145,7 +151,7 @@ class Book(models.Model): for fragm in self.fragments.all().iterator(): fragm.reset_short_html() - try: + try: author = self.tags.filter(category='author')[0].sort_key except IndexError: author = u'' @@ -317,7 +323,7 @@ class Book(models.Model): if 'cover' not in dont_build: book.cover.build_delay() book.cover_thumb.build_delay() - + # No saves behind this point. if has_own_text: @@ -406,6 +412,10 @@ class Book(models.Model): 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: @@ -511,8 +521,6 @@ class Book(models.Model): rel_info = book.related_info() names = [(related_tag_name(tag), Tag.create_url('author', tag['slug'])) for tag in rel_info['tags'].get('author', ())] - import logging - logging.info("%s, %s" % (book.slug, unicode(rel_info['tags'].get('author', ())))) if 'parents' in rel_info: books = [(name, Book.create_url(slug)) for name, slug in rel_info['parents']] @@ -535,7 +543,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()]) @@ -558,7 +566,7 @@ class Book(models.Model): 'title', 'parent', 'slug') if filter: books = books.filter(filter).distinct() - + book_ids = set(b['pk'] for b in books.values("pk").iterator()) for book in books.iterator(): parent = book.parent_id @@ -574,7 +582,7 @@ class Book(models.Model): for tag in Tag.objects.filter(category='author').iterator(): books_by_author[tag] = [] - for book in books_by_parent.get(None,()): + for book in books_by_parent.get(None, ()): authors = list(book.tags.filter(category='author')) if authors: for author in authors: