X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/149903ae7da0968ef3b1b0dc0f329afeaa5a7007..0b1d7187cd243b29566418c3b09fa8043ed53bee:/src/catalogue/models/book.py diff --git a/src/catalogue/models/book.py b/src/catalogue/models/book.py index 978bca4f2..9f0576c5d 100644 --- a/src/catalogue/models/book.py +++ b/src/catalogue/models/book.py @@ -12,6 +12,7 @@ from django.conf import settings from django.db import connection, models, transaction import django.dispatch from django.contrib.contenttypes.fields import GenericRelation +from django.template.loader import render_to_string from django.urls import reverse from django.utils.translation import ugettext_lazy as _, get_language from django.utils.deconstruct import deconstructible @@ -406,6 +407,10 @@ class Book(models.Model): has_daisy_file.short_description = 'DAISY' has_daisy_file.boolean = True + @property + def media_daisy(self): + return self.get_media('daisy') + def get_audiobooks(self): ogg_files = {} for m in self.media.filter(type='ogg').order_by().iterator(): @@ -448,6 +453,17 @@ class Book(models.Model): parse_dublincore=parse_dublincore, meta_fallbacks=meta_fallbacks) + def wldocument2(self): + from catalogue.import_utils import ORMDocProvider + from librarian.document import WLDocument + doc = WLDocument( + self.xml_file.path, + provider=ORMDocProvider(self) + ) + doc.meta.update(self.cover_info()) + return doc + + @staticmethod def zip_format(format_): def pretty_file_name(book): @@ -464,7 +480,17 @@ class Book(models.Model): def zip_audiobooks(self, format_): bm = BookMedia.objects.filter(book=self, type=format_) paths = map(lambda bm: (None, bm.file.path), bm) - return create_zip(paths, "%s_%s" % (self.slug, format_)) + licenses = set() + for m in bm: + license = constants.LICENSES.get( + m.get_extra_info_json().get('license'), {} + ).get('locative') + if license: + licenses.add(license) + readme = render_to_string('catalogue/audiobook_zip_readme.txt', { + 'licenses': licenses, + }) + return create_zip(paths, "%s_%s" % (self.slug, format_), {'informacje.txt': readme}) def search_index(self, book_info=None, index=None, index_tags=True, commit=True): if not self.findable: