Some housekeeping
[redakcja.git] / src / dvcs / storage.py
index 6bb5b59..76051ab 100755 (executable)
@@ -1,9 +1,15 @@
+# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
 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 +19,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)