Revision dca2a31f
b/snf-app/synnefo/api/util.py | ||
---|---|---|
39 | 39 |
from functools import wraps |
40 | 40 |
from hashlib import sha256 |
41 | 41 |
from random import choice |
42 |
from string import ascii_letters, digits
|
|
42 |
from string import digits, lowercase, uppercase
|
|
43 | 43 |
from time import time |
44 | 44 |
from traceback import format_exc |
45 | 45 |
from wsgiref.handlers import format_date_time |
... | ... | |
101 | 101 |
|
102 | 102 |
return utc_since |
103 | 103 |
|
104 |
def random_password(length=8): |
|
105 |
pool = ascii_letters + digits |
|
106 |
return ''.join(choice(pool) for i in range(length)) |
|
104 |
|
|
105 |
def random_password(): |
|
106 |
"""Generates a random password |
|
107 |
|
|
108 |
We try to generate a windows compliant password: it must contain at least |
|
109 |
one charachter from each of the groups: upper case, lower case, digits. |
|
110 |
""" |
|
111 |
|
|
112 |
pool = lowercase + uppercase + digits |
|
113 |
lowerset = set(lowercase) |
|
114 |
upperset = set(uppercase) |
|
115 |
digitset = set(digits) |
|
116 |
length = 10 |
|
117 |
tries = 10 |
|
118 |
|
|
119 |
for i in range(tries): |
|
120 |
password = ''.join(choice(pool) for i in range(length)) |
|
121 |
chars = set(password) |
|
122 |
if chars & lowerset and chars & upperset and chars & digitset: |
|
123 |
break |
|
124 |
|
|
125 |
return password |
|
126 |
|
|
107 | 127 |
|
108 | 128 |
def zeropad(s): |
109 | 129 |
"""Add zeros at the end of a string in order to make its length |
Also available in: Unified diff