def get_user_file_path(instance, filename): basename = path.basename(filename).lower() hs = hashlib.sha256() hs.update(force_bytes(timezone.now().isoformat())) hs.update(os.urandom(1024)) p1, p2, p3, p4, *p5 = split_by_n(hs.hexdigest(), 1) hash_part = path.join(p1, p2, p3, p4, "".join(p5)) return path.join("user", hash_part, basename)
def get_attachment_file_path(instance, filename): basename = path.basename(filename).lower() base, ext = path.splitext(basename) base = slugify(unidecode(base)) basename = "".join([base, ext]) hs = hashlib.sha256() hs.update(force_bytes(timezone.now().isoformat())) hs.update(os.urandom(1024)) p1, p2, p3, p4, *p5 = split_by_n(hs.hexdigest(), 1) hash_part = path.join(p1, p2, p3, p4, "".join(p5)) return path.join("attachments", hash_part, basename)
def get_user_file_path(instance, filename): basename = path.basename(filename).lower() base, ext = path.splitext(basename) base = slugify(unidecode(base)) basename = "".join([base, ext]) hs = hashlib.sha256() hs.update(force_bytes(timezone.now().isoformat())) hs.update(os.urandom(1024)) p1, p2, p3, p4, *p5 = split_by_n(hs.hexdigest(), 1) hash_part = path.join(p1, p2, p3, p4, "".join(p5)) return path.join("project", hash_part, basename)