epub_file = StringIO()
try:
- epub.transform(BookImportDocProvider(self), self.slug, epub_file)
+ epub.transform(BookImportDocProvider(self), self.slug, output_file=epub_file)
self.epub_file.save('%s.epub' % self.slug, ContentFile(epub_file.getvalue()), save=False)
self.save()
FileRecord(slug=self.slug, type='epub', sha1=sha1(epub_file.getvalue()).hexdigest()).save()
@classmethod
- def from_xml_file(cls, xml_file, overwrite=False):
+ def from_xml_file(cls, xml_file, overwrite=False, build_epub=True):
# use librarian to parse meta-data
book_info = dcparser.parse(xml_file)
xml_file = File(open(xml_file))
try:
- return cls.from_text_and_meta(xml_file, book_info, overwrite)
+ return cls.from_text_and_meta(xml_file, book_info, overwrite, build_epub=build_epub)
finally:
xml_file.close()
@classmethod
- def from_text_and_meta(cls, raw_file, book_info, overwrite=False):
+ def from_text_and_meta(cls, raw_file, book_info, overwrite=False, build_epub=True):
from tempfile import NamedTemporaryFile
from slughifi import slughifi
from markupstring import MarkupString
new_fragment.save()
new_fragment.tags = set(book_tags + themes + [book_tag] + ancestor_tags)
- if not book.parent:
+ if build_epub and not book.parent:
+ print 'epub'
book.build_epub(remove_descendants=False)
book_descendants = list(book.children.all())
return self.refresh_theme_counter()
return dict((int(k), v) for k, v in self.get__theme_counter_value().iteritems())
+ def pretty_title(self, html_links=False):
+ book = self
+ names = list(book.tags.filter(category='author'))
+
+ books = []
+ while book:
+ books.append(book)
+ book = book.parent
+ names.extend(reversed(books))
+
+ if html_links:
+ names = ['<a href="%s">%s</a>' % (tag.get_absolute_url(), tag.name) for tag in names]
+ else:
+ names = [tag.name for tag in names]
+
+ return ', '.join(names)
class Fragment(models.Model):