from hashlib import sha1
import os
import os.path
+import subprocess
from django.core.files.storage import FileSystemStorage
from django.core.files.uploadedfile import UploadedFile
class ExistingFile(UploadedFile):
-
def __init__(self, path, *args, **kwargs):
self.path = path
return super(ExistingFile, self).__init__(*args, **kwargs)
class OverwriteStorage(FileSystemStorage):
-
def _save(self, name, content):
if self.exists(name):
self.delete(name)
def sha1_file(f):
sha = sha1()
- for piece in iter(lambda: f.read(1024*1024), ''):
+ for piece in iter(lambda: f.read(1024 * 1024), b""):
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 path, dirs, files in os.walk(root_path, followlinks=True):
for fname in files:
- yield os.path.join(path, fname)[root_len:].lstrip('/')
-
+ if '\n' in fname: continue
+ yield os.path.join(path, fname)[root_len:].lstrip("/")