Rearrange source to src dir.
[redakcja.git] / src / dvcs / storage.py
diff --git a/src/dvcs/storage.py b/src/dvcs/storage.py
new file mode 100755 (executable)
index 0000000..6bb5b59
--- /dev/null
@@ -0,0 +1,18 @@
+from zlib import compress, decompress
+
+from django.core.files.base import ContentFile, File
+from django.core.files.storage import FileSystemStorage
+
+
+class GzipFileSystemStorage(FileSystemStorage):
+    def _open(self, name, mode='rb'):
+        """TODO: This is good for reading; what about writing?"""
+        f = open(self.path(name), 'rb')
+        text = f.read()
+        f.close()
+        return ContentFile(decompress(text))
+
+    def _save(self, name, content):
+        content = ContentFile(compress(content.read()))
+
+        return super(GzipFileSystemStorage, self)._save(name, content)