X-Git-Url: https://git.mdrn.pl/audio.git/blobdiff_plain/2d1d955bb3b4a5ca4dad1153c062c9ab3b6319e7..fe14ab3b5018c92b76e5880dd36b4eb02ef7a3ef:/apps/archive/utils.py?ds=inline diff --git a/apps/archive/utils.py b/apps/archive/utils.py index 4710c20..3e89a8b 100755 --- a/apps/archive/utils.py +++ b/apps/archive/utils.py @@ -1,5 +1,10 @@ +from hashlib import sha1 +import os +import os.path +from django.core.files.storage import FileSystemStorage from django.core.files.uploadedfile import UploadedFile + class ExistingFile(UploadedFile): def __init__(self, path, *args, **kwargs): @@ -11,3 +16,29 @@ class ExistingFile(UploadedFile): def close(self): pass + + +class OverwriteStorage(FileSystemStorage): + + def _save(self, name, content): + if self.exists(name): + self.delete(name) + return super(OverwriteStorage, self)._save(name, content) + + def get_available_name(self, name): + return name + + +def sha1_file(f): + sha = sha1() + for piece in iter(lambda: f.read(1024*1024), ''): + sha.update(piece) + return sha.hexdigest() + + +def all_files(root_path): + root_len = len(root_path) + for path, dirs, files in os.walk(root_path): + for fname in files: + yield os.path.join(path, fname)[root_len:].lstrip('/') +