X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/68dbe44bdbc497a82064c6a47eeaecbb34463f64..884be9d702f99a38cd9b04c4fdedca887286f35d:/apps/catalogue/models/book.py diff --git a/apps/catalogue/models/book.py b/apps/catalogue/models/book.py index 3cab67632..3c50a964c 100644 --- a/apps/catalogue/models/book.py +++ b/apps/catalogue/models/book.py @@ -27,6 +27,7 @@ class Book(models.Model): """Represents a book imported from WL-XML.""" title = models.CharField(_('title'), max_length=120) sort_key = models.CharField(_('sort key'), max_length=120, db_index=True, editable=False) + sort_key_author = models.CharField(_('sort key by author'), max_length=120, db_index=True, editable=False, default=u'') slug = models.SlugField(_('slug'), max_length=120, db_index=True, unique=True) common_slug = models.SlugField(_('slug'), max_length=120, db_index=True) @@ -74,6 +75,7 @@ class Book(models.Model): from sortify import sortify self.sort_key = sortify(self.title) + self.title = unicode(self.title) # ??? ret = super(Book, self).save(force_insert, force_update, **kwargs) @@ -95,6 +97,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] @@ -140,6 +148,14 @@ class Book(models.Model): for fragm in self.fragments.all().iterator(): fragm.reset_short_html() + try: + author = self.tags.filter(category='author')[0].sort_key + except IndexError: + author = u'' + type(self).objects.filter(pk=self.pk).update(sort_key_author=author) + + + def has_description(self): return len(self.description) > 0 has_description.short_description = _('description') @@ -408,7 +424,7 @@ class Book(models.Model): for category in tags: cat = [] for tag in tags[category]: - tag_info = {'slug': tag.slug} + tag_info = {'slug': tag.slug, 'name': tag.name} for lc, ln in settings.LANGUAGES: tag_name = getattr(tag, "name_%s" % lc) if tag_name: @@ -500,6 +516,8 @@ 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']]