diff options
| author | Barry Warsaw | 2011-04-01 18:51:29 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2011-04-01 18:51:29 -0400 |
| commit | 33ad44bc97f08df71f227f6f2a006e770a75c353 (patch) | |
| tree | ef369d5dc968372d824cbe50421a1f5331461149 /src/mailman/model/user.py | |
| parent | dee26f391da59c68a23f8fb960dff9ebd879e916 (diff) | |
| download | mailman-33ad44bc97f08df71f227f6f2a006e770a75c353.tar.gz mailman-33ad44bc97f08df71f227f6f2a006e770a75c353.tar.zst mailman-33ad44bc97f08df71f227f6f2a006e770a75c353.zip | |
* Re-organize the interface between buildout.cfg and the zope.testing layer
initialization. buildout.cfg is now really simple; it calls one method.
That method does all the relevant layer initializations. This better
localizes what has to be set up before testing can even begin.
* IUsers now have a created_on property which contains the datetime at which
the user record was created.
* Rework the date and uid factories so that they consult the
MockAndMonkeyLayer for the current testing flag. Also, those factories
register themselves with the layer so that they'll get automatically reset
between tests, without the layer actually having to know about them.
* Move the User model object initialization into User.__init__() from the user
manager. The User now also adds itself to the store.
* Add a 'uid factory' for unique id creation, which is test suite aware.
Diffstat (limited to '')
| -rw-r--r-- | src/mailman/model/user.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/mailman/model/user.py b/src/mailman/model/user.py index f037bdd48..05ce356ca 100644 --- a/src/mailman/model/user.py +++ b/src/mailman/model/user.py @@ -24,7 +24,7 @@ __all__ = [ 'User', ] -from storm.locals import Int, Reference, ReferenceSet, Unicode +from storm.locals import DateTime, Int, Reference, ReferenceSet, Unicode from zope.interface import implements from mailman.config import config @@ -35,6 +35,8 @@ from mailman.interfaces.user import IUser from mailman.model.address import Address from mailman.model.preferences import Preferences from mailman.model.roster import Memberships +from mailman.utilities.datetime import factory as date_factory +from mailman.utilities.uid import factory as uid_factory @@ -47,11 +49,20 @@ class User(Model): real_name = Unicode() password = Unicode() _user_id = Unicode() + _created_on = DateTime() addresses = ReferenceSet(id, 'Address.user_id') preferences_id = Int() preferences = Reference(preferences_id, 'Preferences.id') + def __init__(self, real_name=None, preferences=None): + super(User, self).__init__() + self._created_on = date_factory.now() + self._user_id = uid_factory.new_uid() + self.real_name = ('' if real_name is None else real_name) + self.preferences = preferences + config.db.store.add(self) + def __repr__(self): return '<User "{0.real_name}" ({0.user_id}) at {1:#x}>'.format( self, id(self)) @@ -61,6 +72,11 @@ class User(Model): """See `IUser`.""" return self._user_id + @property + def created_on(self): + """See `IUser`.""" + return self._created_on + def link(self, address): """See `IUser`.""" if address.user is not None: |
