X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/80d3980873a2c07121f466c187de92be1cea8415..2d8bcd45b873aa01d43b07d0179d373e0bdc9bb5:/apps/catalogue/utils.py diff --git a/apps/catalogue/utils.py b/apps/catalogue/utils.py index 7a405ba80..368f96d20 100644 --- a/apps/catalogue/utils.py +++ b/apps/catalogue/utils.py @@ -6,9 +6,12 @@ import random import time from base64 import urlsafe_b64encode +from django.core.files.uploadedfile import UploadedFile from django.utils.hashcompat import sha_constructor from django.conf import settings +from librarian import DocProvider + # Use the system (hardware-based) random number generator if it exists. if hasattr(random, 'SystemRandom'): @@ -30,3 +33,29 @@ def split_tags(tags): for tag in tags: result.setdefault(tag.category, []).append(tag) return result + + +class ExistingFile(UploadedFile): + + def __init__(self, path, *args, **kwargs): + self.path = path + return super(ExistingFile, self).__init__(*args, **kwargs) + + def temporary_file_path(self): + return self.path + + def close(self): + pass + + +class BookImportDocProvider(DocProvider): + """Used for joined EPUB and PDF files.""" + + def __init__(self, book): + self.book = book + + def by_slug(self, slug): + if slug == self.book.slug: + return self.book.xml_file + else: + return type(self.book).objects.get(slug=slug).xml_file