"""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)
"""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)
slug = models.SlugField(_('slug'), max_length=120, db_index=True,
unique=True)
common_slug = models.SlugField(_('slug'), max_length=120, db_index=True)
slug = models.SlugField(_('slug'), max_length=120, db_index=True,
unique=True)
common_slug = models.SlugField(_('slug'), max_length=120, db_index=True)
cover = EbookField('cover', _('cover'),
upload_to=book_upload_path('jpg'), null=True, blank=True)
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']
ebook_formats = constants.EBOOK_FORMATS
formats = ebook_formats + ['html', 'xml']
ret = super(Book, self).save(force_insert, force_update, **kwargs)
ret = super(Book, self).save(force_insert, force_update, **kwargs)
+ 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 has_description(self):
return len(self.description) > 0
has_description.short_description = _('description')
def has_description(self):
return len(self.description) > 0
has_description.short_description = _('description')
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()
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 related_info(self):
"""Keeps info about related objects (tags, media) in cache field."""
if self._related_info is not None:
def related_info(self):
"""Keeps info about related objects (tags, media) in cache field."""
if self._related_info is not None:
for lc, ln in settings.LANGUAGES:
tag_name = getattr(tag, "name_%s" % lc)
if tag_name:
for lc, ln in settings.LANGUAGES:
tag_name = getattr(tag, "name_%s" % lc)
if tag_name:
book = self
rel_info = book.related_info()
names = [(related_tag_name(tag), Tag.create_url('author', tag['slug']))
book = self
rel_info = book.related_info()
names = [(related_tag_name(tag), Tag.create_url('author', tag['slug']))
- for tag in rel_info['tags']['author']]
+ 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']]
if 'parents' in rel_info:
books = [(name, Book.create_url(slug))
for name, slug in rel_info['parents']]