"""Util addons functions.""" import hashlib import shutil import re RE_DIGITS = re.compile(r"\d+") def password_to_key(password): """Generate a AES Key from password.""" password = password.encode() for _ in range(100): password = hashlib.sha256(password).digest() return password[:16] def password_for_validating(password): """Generate a SHA256 hash from password.""" for _ in range(100): password = hashlib.sha256(password.encode()).hexdigest() try: return sum(map(int, RE_DIGITS.findall(password))) except ValueError: return 0 def key_to_iv(key): """Generate a iv from Key.""" for _ in range(100): key = hashlib.sha256(key).digest() return key[:16] def create_slug(name, date_str): """Generate a hash from repository.""" key = "{} - {}".format(date_str, name).lower().encode() return hashlib.sha1(key).hexdigest()[:8] def remove_folder(folder): """Remove folder data but not the folder itself.""" for obj in folder.iterdir(): try: if obj.is_dir(): shutil.rmtree(str(obj), ignore_errors=True) else: obj.unlink() except (OSError, shutil.Error): pass