X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/391b7a7b21da0ae7aae68826cfee514c8ea7eca9..9d313b5b47b31bf6fd82987b967923c4eca011ac:/apps/dvcs/storage.py?ds=inline diff --git a/apps/dvcs/storage.py b/apps/dvcs/storage.py index 6bb5b595..4bf292bc 100755 --- a/apps/dvcs/storage.py +++ b/apps/dvcs/storage.py @@ -1,8 +1,24 @@ -from zlib import compress, decompress +from __future__ import unicode_literals +import os from django.core.files.base import ContentFile, File from django.core.files.storage import FileSystemStorage +try: + from gzip import compress, decompress +except ImportError: + # Python < 3.2 + from gzip import GzipFile + from StringIO import StringIO + + def compress(data): + compressed = StringIO() + GzipFile(fileobj=compressed, mode="wb").write(data) + return compressed.getvalue() + + def decompress(data): + return GzipFile(fileobj=StringIO(data)).read() + class GzipFileSystemStorage(FileSystemStorage): def _open(self, name, mode='rb'): @@ -14,5 +30,9 @@ class GzipFileSystemStorage(FileSystemStorage): def _save(self, name, content): content = ContentFile(compress(content.read())) - return super(GzipFileSystemStorage, self)._save(name, content) + + def get_available_name(self, name): + if self.exists(name): + self.delete(name) + return name \ No newline at end of file