category = models.CharField(_('category'), max_length=50, blank=False, null=False,
db_index=True, choices=TAG_CATEGORIES)
description = models.TextField(_('description'), blank=True)
- main_page = models.BooleanField(_('main page'), default=False, db_index=True, help_text=_('Show tag on main page'))
user = models.ForeignKey(User, blank=True, null=True)
book_count = models.IntegerField(_('book count'), blank=True, null=True)
try:
tag_names = getattr(info, field_name)
except:
- tag_names = [getattr(info, category)]
+ try:
+ tag_names = [getattr(info, category)]
+ except:
+ # For instance, Pictures do not have 'genre' field.
+ continue
for tag_name in tag_names:
tag_sort_key = tag_name
if category == 'author':
tag_sort_key = tag_name.last_name
- tag_name = ' '.join(tag_name.first_names) + ' ' + tag_name.last_name
+ tag_name = tag_name.readable()
tag, created = Tag.objects.get_or_create(slug=slughifi(tag_name), category=category)
if created:
tag.name = tag_name
wiki_link = models.CharField(blank=True, max_length=240)
# files generated during publication
+ cover = models.FileField(_('cover'), upload_to=book_upload_path('png'),
+ null=True, blank=True)
ebook_formats = ['pdf', 'epub', 'mobi', 'txt']
formats = ebook_formats + ['html', 'xml']
provider=ORMDocProvider(self),
parse_dublincore=parse_dublincore)
+ def build_cover(self, book_info=None):
+ """(Re)builds the cover image."""
+ from StringIO import StringIO
+ from django.core.files.base import ContentFile
+ from librarian.cover import WLCover
+
+ if book_info is None:
+ book_info = self.wldocument().book_info
+
+ cover = WLCover(book_info).image()
+ imgstr = StringIO()
+ cover.save(imgstr, 'png')
+ self.cover.save(None, ContentFile(imgstr.getvalue()))
+
def build_pdf(self, customizations=None, file_name=None):
""" (Re)builds the pdf file.
customizations - customizations which are passed to LaTeX class file.
if not settings.NO_BUILD_TXT and build_txt:
book.build_txt()
+ book.build_cover(book_info)
+
if not settings.NO_BUILD_EPUB and build_epub:
book.build_epub()