X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/8132fc186eb0c5fd02c86828c3a4735754296d02..5913c54d19b8f6775633176032161d49f9b2f1aa:/src/catalogue/ebook_utils.py?ds=sidebyside diff --git a/src/catalogue/ebook_utils.py b/src/catalogue/ebook_utils.py new file mode 100644 index 00000000..dae2e769 --- /dev/null +++ b/src/catalogue/ebook_utils.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +from StringIO import StringIO +from catalogue.models import Book +from librarian import DocProvider +from django.http import HttpResponse + + +class RedakcjaDocProvider(DocProvider): + """Used for getting books' children.""" + + def __init__(self, publishable): + self.publishable = publishable + + def by_slug(self, slug): + return StringIO(Book.objects.get(dc_slug=slug + ).materialize(publishable=self.publishable + ).encode('utf-8')) + + +def serve_file(file_path, name, mime_type): + def read_chunks(f, size=8192): + chunk = f.read(size) + while chunk: + yield chunk + chunk = f.read(size) + + response = HttpResponse(content_type=mime_type) + response['Content-Disposition'] = 'attachment; filename=%s' % name + with open(file_path) as f: + for chunk in read_chunks(f): + response.write(chunk) + return response