use hashes of approximately 80 bit and use all digits and characters (lower case) for the hash
This commit is contained in:
parent
fc4ff978cc
commit
8eda09bb20
1 changed files with 15 additions and 3 deletions
|
@ -178,10 +178,22 @@ def get_poll_admin_id(hash_key):
|
|||
else:
|
||||
return None
|
||||
|
||||
def get_new_hash_key():
|
||||
hash_key = uuid.uuid4().get_hex()
|
||||
def get_new_hash_key(length=16, charset=None):
|
||||
""" returns a quite random hash key with the specified length """
|
||||
if charset is None:
|
||||
charset = "0123456789abcdefghijklmnopqrstuvwxyz"
|
||||
def get_hash_string(length):
|
||||
base = uuid.uuid4().int
|
||||
result = []
|
||||
while len(result) < length:
|
||||
value = base % len(charset)
|
||||
base //= len(charset)
|
||||
result.append(charset[value])
|
||||
return "".join(result)
|
||||
# repeat the hash generation until a new value is found
|
||||
hash_key = get_hash_string(length)
|
||||
while (not get_poll_id(hash_key) is None) or (not get_poll_admin_id(hash_key) is None):
|
||||
hash_key = uuid.uuid4().get_hex()
|
||||
hash_key = get_hash_string(length)
|
||||
return hash_key
|
||||
|
||||
@bobo.query('/polls/new')
|
||||
|
|
Loading…
Reference in a new issue