from random import randint
import os.path
import re
+import requests
from slugify import slugify
from sortify import sortify
from urllib.request import urlretrieve
preview_key = models.CharField(max_length=32, blank=True, null=True)
findable = models.BooleanField('wyszukiwalna', default=True, db_index=True)
can_sell = models.BooleanField('do sprzedaży', default=True)
+ can_sell_mp3 = models.BooleanField('do sprzedaży mp3', default=False)
isbn_mp3 = models.CharField('ISBN audiobooka', max_length=32, blank=True)
# files generated during publication
for format_ in constants.EBOOK_FORMATS_WITH_CHILDREN:
if format_ not in dont_build:
getattr(book, '%s_file' % format_).build_delay()
- book.html_nonotes_file.build_delay()
+ if 'html_nonotes' not in dont_build:
+ book.html_nonotes_file.build_delay()
if not settings.NO_SEARCH_INDEX and search_index and findable:
tasks.index_book.delay(book.id)
child.parent_cover_changed()
book.update_popularity()
- tasks.update_references.delay(book.id)
+ if 'references' not in dont_build:
+ tasks.update_references.delay(book.id)
cls.published.send(sender=cls, instance=book)
return book
narrators.append(t)
self.narrators.set(narrators)
+ def update_can_sell_mp3(self):
+ ret = True
+ for child in self.get_children():
+ child.update_can_sell_mp3()
+ if not child.can_sell_mp3:
+ ret = False
+ if self.has_mp3_file():
+ audio_items = requests.get(f'https://audio.wolnelektury.pl/archive/book/{self.slug}.json').json()['items']
+ if not all(x['project']['can_sell'] for x in audio_items):
+ ret = False
+ self.can_sell_mp3 = ret
+ self.save(update_fields=['can_sell_mp3'])
+
@classmethod
@transaction.atomic
def repopulate_ancestors(cls):