Rearrange source to src dir.
[redakcja.git] / src / catalogue / ebook_utils.py
diff --git a/src/catalogue/ebook_utils.py b/src/catalogue/ebook_utils.py
new file mode 100644 (file)
index 0000000..dae2e76
--- /dev/null
@@ -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