X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/39b99a8a8920dca527eb823b860303103389fd91..dd85755df4e3ef8489a6fb2f71a65abf84b06739:/src/catalogue/models/book.py diff --git a/src/catalogue/models/book.py b/src/catalogue/models/book.py index 6e6c50f8f..068bae899 100644 --- a/src/catalogue/models/book.py +++ b/src/catalogue/models/book.py @@ -20,6 +20,7 @@ import jsonfield from fnpdjango.storage import BofhFileSystemStorage from ssify import flush_ssi_includes +from librarian.cover import WLCover from librarian.html import transform_abstrakt from newtagging import managers from catalogue import constants @@ -115,6 +116,8 @@ class Book(models.Model): html_built = django.dispatch.Signal() published = django.dispatch.Signal() + SORT_KEY_SEP = '$' + class AlreadyExists(Exception): pass @@ -136,6 +139,15 @@ class Book(models.Model): def authors(self): return self.tags.filter(category='author') + def epochs(self): + return self.tags.filter(category='epoch') + + def genres(self): + return self.tags.filter(category='genre') + + def kinds(self): + return self.tags.filter(category='kind') + def tag_unicode(self, category): relations = prefetched_relations(self, category) if relations: @@ -149,6 +161,15 @@ class Book(models.Model): def author_unicode(self): return self.cached_author + def kind_unicode(self): + return self.tag_unicode('kind') + + def epoch_unicode(self): + return self.tag_unicode('epoch') + + def genre_unicode(self): + return self.tag_unicode('genre') + def translator(self): translators = self.extra_info.get('translators') if not translators: @@ -184,12 +205,12 @@ class Book(models.Model): @permalink def get_absolute_url(self): - return 'catalogue.views.book_detail', [self.slug] + return 'book_detail', [self.slug] @staticmethod @permalink def create_url(slug): - return 'catalogue.views.book_detail', [slug] + return 'book_detail', [slug] def gallery_path(self): return gallery_path(self.slug) @@ -780,6 +801,12 @@ class Book(models.Model): if likes(user, self): set_sets(user, self, []) + def full_sort_key(self): + return self.SORT_KEY_SEP.join((self.sort_key_author, self.sort_key, str(self.id))) + + def cover_color(self): + return WLCover.epoch_colors.get(self.extra_info.get('epoch'), '#000000') + def add_file_fields(): for format_ in Book.formats: