from django.core.urlresolvers import reverse
from datetime import datetime
+from django.conf import settings
+
from newtagging.models import TagBase, tags_updated
from newtagging import managers
from catalogue.fields import JSONField
try:
epub.transform(BookImportDocProvider(self), self.slug, epub_file)
self.epub_file.save('%s.epub' % self.slug, ContentFile(epub_file.getvalue()), save=False)
- self.save()
+ self.save(refresh_mp3=False)
FileRecord(slug=self.slug, type='epub', sha1=sha1(epub_file.getvalue()).hexdigest()).save()
except NoDublinCore:
pass
if remove_descendants and child_book.has_epub_file():
child_book.epub_file.delete()
# save anyway, to refresh short_html
- child_book.save()
+ child_book.save(refresh_mp3=False)
book_descendants += list(child_book.children.all())
from markupstring import MarkupString
from django.core.files.storage import default_storage
+ # check for parts before we do anything
+ children = []
+ if hasattr(book_info, 'parts'):
+ for part_url in book_info.parts:
+ base, slug = part_url.rsplit('/', 1)
+ try:
+ children.append(Book.objects.get(slug=slug))
+ except Book.DoesNotExist, e:
+ raise Book.DoesNotExist(_('Book with slug = "%s" does not exist.') % slug)
+
+
# Read book metadata
book_base, book_slug = book_info.url.rsplit('/', 1)
book, created = Book.objects.get_or_create(slug=book_slug)
book_tag = book.book_tag()
- if hasattr(book_info, 'parts'):
- for n, part_url in enumerate(book_info.parts):
- base, slug = part_url.rsplit('/', 1)
- try:
- child_book = Book.objects.get(slug=slug)
- child_book.parent = book
- child_book.parent_number = n
- child_book.save()
- except Book.DoesNotExist, e:
- raise Book.DoesNotExist(_('Book with slug = "%s" does not exist.') % slug)
+ for n, child_book in enumerate(children):
+ child_book.parent = book
+ child_book.parent_number = n
+ child_book.save()
# Save XML and HTML files
book.xml_file.save('%s.xml' % book.slug, raw_file, save=False)
new_fragment.save()
new_fragment.tags = set(book_tags + themes + [book_tag] + ancestor_tags)
- if not book.parent:
- book.build_epub(remove_descendants=False)
+ if not settings.NO_BUILD_EPUB:
+ book.root_ancestor().build_epub()
book_descendants = list(book.children.all())
# add l-tag to descendants and their fragments
while len(book_descendants) > 0:
child_book = book_descendants.pop(0)
child_book.tags = list(child_book.tags) + [book_tag]
- if child_book.has_epub_file():
- child_book.epub_file.delete()
child_book.save()
for fragment in child_book.fragments.all():
fragment.tags = set(list(fragment.tags) + [book_tag])