summaryrefslogtreecommitdiff
path: root/src/mailman/model/usermanager.py
diff options
context:
space:
mode:
authorBarry Warsaw2011-03-18 15:03:15 -0400
committerBarry Warsaw2011-03-18 15:03:15 -0400
commitd10751e5f93e6357aa11323602ef5840cd5eb5e0 (patch)
tree2d12e6ed14b000156971f1f0e912dc519cb5ac33 /src/mailman/model/usermanager.py
parentb81ebbf535e8a53b10d4b0f82ecedd8971314610 (diff)
parentdee26f391da59c68a23f8fb960dff9ebd879e916 (diff)
downloadmailman-d10751e5f93e6357aa11323602ef5840cd5eb5e0.tar.gz
mailman-d10751e5f93e6357aa11323602ef5840cd5eb5e0.tar.zst
mailman-d10751e5f93e6357aa11323602ef5840cd5eb5e0.zip
Merge users into rest
Diffstat (limited to '')
-rw-r--r--src/mailman/model/usermanager.py26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/mailman/model/usermanager.py b/src/mailman/model/usermanager.py
index 067ed7795..3294b3e7f 100644
--- a/src/mailman/model/usermanager.py
+++ b/src/mailman/model/usermanager.py
@@ -25,6 +25,10 @@ __all__ = [
]
+import os
+import time
+import hashlib
+
from zope.interface import implements
from mailman.config import config
@@ -33,6 +37,7 @@ from mailman.interfaces.usermanager import IUserManager
from mailman.model.address import Address
from mailman.model.preferences import Preferences
from mailman.model.user import User
+from mailman.utilities.passwords import SALT_LENGTH
@@ -46,6 +51,11 @@ class UserManager:
address = self.create_address(email, real_name)
user.link(address)
user.preferences = Preferences()
+ # Generate a unique random SHA1 hash for the user id.
+ salt = os.urandom(SALT_LENGTH)
+ h = hashlib.sha1(repr(time.time()))
+ h.update(salt)
+ user._user_id = unicode(h.hexdigest(), 'us-ascii')
config.db.store.add(user)
return user
@@ -56,10 +66,13 @@ class UserManager:
addresses = config.db.store.find(Address, email=email.lower())
if addresses.count() == 0:
return None
- elif addresses.count() == 1:
- return addresses[0].user
- else:
- raise AssertionError('Unexpected query count')
+ return addresses.one().user
+
+ def get_user_by_id(self, user_id):
+ users = config.db.store.find(User, _user_id=user_id)
+ if users.count() == 0:
+ return None
+ return users.one()
@property
def users(self):
@@ -92,10 +105,7 @@ class UserManager:
addresses = config.db.store.find(Address, email=email.lower())
if addresses.count() == 0:
return None
- elif addresses.count() == 1:
- return addresses[0]
- else:
- raise AssertionError('Unexpected query count')
+ return addresses.one()
@property
def addresses(self):