def handle(self, *args, **options): if len(args) == 0: raise CommandError("You must specify book name!") try: book = models.Book.objects.get(url_title__iexact=args[0]) except models.Book.DoesNotExist: raise CommandError('Book "%s" does not exist.' % args[0]) book_version = book.get_version(options['book_version']) if not book_version: raise CommandError('Book version %s does not exist.' % options['book_version']) from booktype.apps.export.utils import get_exporter_class filename = '%s.epub' % book.url_title if options['output_name']: filename = options['output_name'] get_exporter_class()(filename, book_version).run() if options['verbosity'] in ['1', '2']: print 'Book successfully exported into "%s" file.' % filename
def get(self, request, bookid): try: book = models.Book.objects.get(url_title__iexact=bookid) except models.Book.DoesNotExist: pass book_version = book.get_version(None) response = HttpResponse(content_type='application/epub+zip') response['Content-Disposition'] = 'attachment; filename=%s.epub' % book.url_title temp_dir = tempfile.mkdtemp() filename = '%s/export.epub' % temp_dir from booktype.apps.export.utils import get_exporter_class # it should return object epub book # we should be able to write it as a separate thing get_exporter_class()(filename, book_version).run() # write file response.write(open(filename, 'rb').read()) os.unlink(filename) os.rmdir(temp_dir) return response
def import_based_on_book(base_book_version, book_dest): """ This will create an epub file from an existing book to later use our importing mechanism and put its content into a second book (just like cloning action but based on epub) Keyword arguments: base_book_version -- Book version to be used as base book_dest -- Destiny book """ with temporary_directory() as temp_dir: temporale_epub = '%s/temporale.epub' % temp_dir # it should return object epub book # we should be able to write it as a separate thing get_exporter_class()(temporale_epub, base_book_version).run() return import_based_on_epub(temporale_epub, book_dest)