diff options
| author | Barry Warsaw | 2011-05-07 22:54:38 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2011-05-07 22:54:38 -0400 |
| commit | 9dc1a0fbc0315840ef745fe736700c0376bb6976 (patch) | |
| tree | b3094032e3754a101c3ad5f2217f2996ab9306b1 /src/mailman/utilities/uid.py | |
| parent | cfde4406a92e7927d5c2ab8b0d8d1c3e3f2a1c67 (diff) | |
| parent | 700a6c5a4716d468e0581e1d423360c582518be0 (diff) | |
| download | mailman-9dc1a0fbc0315840ef745fe736700c0376bb6976.tar.gz mailman-9dc1a0fbc0315840ef745fe736700c0376bb6976.tar.zst mailman-9dc1a0fbc0315840ef745fe736700c0376bb6976.zip | |
Diffstat (limited to 'src/mailman/utilities/uid.py')
| -rw-r--r-- | src/mailman/utilities/uid.py | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/src/mailman/utilities/uid.py b/src/mailman/utilities/uid.py index e44ed2983..7ef50ace0 100644 --- a/src/mailman/utilities/uid.py +++ b/src/mailman/utilities/uid.py @@ -31,16 +31,14 @@ __all__ = [ import os -import time import errno -import hashlib from flufl.lock import Lock +from uuid import uuid4 from mailman.config import config from mailman.model.uid import UID from mailman.testing import layers -from mailman.utilities.passwords import SALT_LENGTH @@ -69,7 +67,12 @@ class UniqueIDFactory: self._lockobj = Lock(self._lock_file) return self._lockobj - def new_uid(self, bytes=None): + def new_uid(self): + """Return a new UID. + + :return: The new uid + :rtype: unicode + """ if layers.is_testing(): # When in testing mode we want to produce predictable id, but we # need to coordinate this among separate processes. We could use @@ -80,19 +83,14 @@ class UniqueIDFactory: # tests will be serialized enough (and the ids reset between # tests) that it will not be a problem. Maybe. return self._next_uid() - salt = os.urandom(SALT_LENGTH) while True: - h = hashlib.sha1(repr(time.time())) - h.update(salt) - if bytes is not None: - h.update(bytes) - uid = unicode(h.hexdigest(), 'us-ascii') - try: - UID.record(uid) - except ValueError: - pass - else: - return uid + uid = unicode(uuid4().hex, 'us-ascii') + try: + UID.record(uid) + except ValueError: + pass + else: + return uid def _next_uid(self): with self._lock: |
