Django 2.0
[redakcja.git] / src / dvcs / storage.py
index 6bb5b59..a57d759 100755 (executable)
@@ -2,8 +2,11 @@ from zlib import compress, decompress
 
 from django.core.files.base import ContentFile, File
 from django.core.files.storage import FileSystemStorage
+from django.utils.deconstruct import deconstructible
+from django.utils.encoding import force_bytes
 
 
+@deconstructible
 class GzipFileSystemStorage(FileSystemStorage):
     def _open(self, name, mode='rb'):
         """TODO: This is good for reading; what about writing?"""
@@ -13,6 +16,7 @@ class GzipFileSystemStorage(FileSystemStorage):
         return ContentFile(decompress(text))
 
     def _save(self, name, content):
-        content = ContentFile(compress(content.read()))
+        data = force_bytes(content.read())
+        content = ContentFile(compress(data))
 
         return super(GzipFileSystemStorage, self)._save(name, content)