""" Functions to normalize various inputs """ import hashlib def generate_system_username(username): """ Generate a posix username from given username. If username < 26 char, we just return it. Else, we hash the username, truncate username at 26 char, append a '-' and first add 5char of hash. This makes sure our usernames are always under 32char. """ if len(username) < 26: return username userhash = hashlib.sha256(username.encode("utf-8")).hexdigest() return "{username_trunc}-{hash}".format( username_trunc=username[:26], hash=userhash[:5] )