[Checkins] SVN: PluggableAuthService/branches/z3-events/ Rework the
events to include the principal object instead of a userid.
Wichert Akkerman
wichert at wiggy.net
Sun Jun 10 18:11:44 EDT 2007
Log message for revision 76604:
Rework the events to include the principal object instead of a userid.
Changed:
U PluggableAuthService/branches/z3-events/PluggableAuthService.py
U PluggableAuthService/branches/z3-events/events.py
U PluggableAuthService/branches/z3-events/events.zcml
U PluggableAuthService/branches/z3-events/tests/test_UserFolder.py
-=-
Modified: PluggableAuthService/branches/z3-events/PluggableAuthService.py
===================================================================
--- PluggableAuthService/branches/z3-events/PluggableAuthService.py 2007-06-10 21:56:54 UTC (rev 76603)
+++ PluggableAuthService/branches/z3-events/PluggableAuthService.py 2007-06-10 22:11:43 UTC (rev 76604)
@@ -77,7 +77,7 @@
from interfaces.plugins import IChallengeProtocolChooser
from interfaces.plugins import IRequestTypeSniffer
-from events import UserCreated
+from events import PrincipalCreated
from permissions import SearchPrincipals
@@ -957,7 +957,7 @@
pass
if user is not None:
- event.notify(UserCreated(self, user.getId(), login))
+ event.notify(PrincipalCreated(self, user))
security.declarePublic('all_meta_types')
Modified: PluggableAuthService/branches/z3-events/events.py
===================================================================
--- PluggableAuthService/branches/z3-events/events.py 2007-06-10 21:56:54 UTC (rev 76603)
+++ PluggableAuthService/branches/z3-events/events.py 2007-06-10 22:11:43 UTC (rev 76604)
@@ -1,3 +1,5 @@
+from zope.component import adapter
+from zope.component import subscribers
from zope.interface import implements
from Products.PluggableAuthService.interfaces.events import *
@@ -4,46 +6,49 @@
class PASEvent(object):
implements(IPASEvent)
- def __init__(self, acl_users, userid):
+ def __init__(self, acl_users, principal):
self.acl_users=acl_users
- self.userid=userid
+ self.principal=principal
+ self.object=principal
-class UserCreated(PASEvent):
- implements(IUserCreatedEvent)
+class PrincipalCreated(PASEvent):
+ implements(IPrincipalCreatedEvent)
- def __init__(self, acl_users, userid, login):
- self.acl_users=acl_users
- self.userid=userid
- self.login=login
+class PrincipalDeleted(PASEvent):
+ implements(IPrincipalDeletedEvent)
-class UserDeleted(PASEvent):
- implements(IUserDeletedEvent)
+class CredentialsUpdated(PASEvent):
+ implements(ICredentialsUpdatedEvent)
-class UserCredentialsUpdated(PASEvent):
- implements(IUserCredentialsUpdatedEvent)
-
- def __init__(self, acl_users, userid, password):
- self.acl_users=acl_users
- self.userid=userid
+ def __init__(self, acl_users, principal, password):
+ super(CredentialsUpdated, self).__init__(acl_users, principal)
self.password=password
-class UserPropertiesUpdated(PASEvent):
- implements(IUserPropertiesUpdatedEvent)
+class PropertiesUpdated(PASEvent):
+ implements(IPropertiesUpdatedEvent)
- def __init__(self, acl_users, userid, properties):
- self.acl_users=acl_users
- self.userid=userid
+ def __init__(self, acl_users, principal, properties):
+ super(CredentialsUpdated, self).__init__(acl_users, principal)
self.properties=properties
-def userCredentialsUpdatedHandler(event):
+
+def userCredentialsUpdatedHandler(principal, event):
event.acl_users.updateCredentials(
event.acl_users,
event.acl_users.REQUEST,
event.acl_users.REQUEST.RESPONSE,
- event.userid,
+ principal.getId(),
event.password)
+
+ at adapter(IPASEvent)
+def PASEventNotify(event):
+ """Event subscriber to dispatch PASEvent to interested adapters."""
+ adapters = subscribers((event.principal, event), None)
+ for adapter in adapters:
+ pass # getting them does the work
+
Modified: PluggableAuthService/branches/z3-events/events.zcml
===================================================================
--- PluggableAuthService/branches/z3-events/events.zcml 2007-06-10 21:56:54 UTC (rev 76603)
+++ PluggableAuthService/branches/z3-events/events.zcml 2007-06-10 22:11:43 UTC (rev 76604)
@@ -2,8 +2,11 @@
xmlns="http://namespaces.zope.org/zope"
>
+ <subscriber handler=".events.PASEventNotify" />
+
<subscriber
- for=".interfaces.events.IUserCredentialsUpdatedEvent"
+ for=".interfaces.authservice.IBasicUser
+ .interfaces.events.ICredentialsUpdatedEvent"
handler=".events.userCredentialsUpdatedHandler"
/>
Modified: PluggableAuthService/branches/z3-events/tests/test_UserFolder.py
===================================================================
--- PluggableAuthService/branches/z3-events/tests/test_UserFolder.py 2007-06-10 21:56:54 UTC (rev 76603)
+++ PluggableAuthService/branches/z3-events/tests/test_UserFolder.py 2007-06-10 22:11:43 UTC (rev 76604)
@@ -26,10 +26,10 @@
from zope import event
from zope.component import adapter
from zope.component import provideHandler
-from Products.PluggableAuthService.interfaces.events import IUserCreatedEvent
-from Products.PluggableAuthService.events import UserCredentialsUpdated
+from Products.PluggableAuthService.interfaces.events import IPrincipalCreatedEvent
+from Products.PluggableAuthService.events import CredentialsUpdated
- at adapter(IUserCreatedEvent)
+ at adapter(IPrincipalCreatedEvent)
def userCreatedHandler(event):
if not hasattr(event.acl_users, 'events'):
event.acl_users.events= []
@@ -307,9 +307,9 @@
self.assertEqual(len(self.uf.events), 1)
event = self.uf.events[0]
- self.failUnless(IUserCreatedEvent.providedBy(event))
- self.assertEqual(event.login, 'event1')
- self.assertEqual(event.userid, 'event1')
+ self.failUnless(IPrincipalCreatedEvent.providedBy(event))
+ self.assertEqual(event.principal.getUserName(), 'event1')
+ self.assertEqual(event.principal.getId(), 'event1')
def testCredentialsEvent(self):
def wrap(self, *args):
@@ -318,7 +318,8 @@
self.uf._data=[]
self.uf._original=self.uf.updateCredentials
self.uf.updateCredentials=wrap
- event.notify(UserCredentialsUpdated(self.uf, "user1", "testpassword"))
+ event.notify(CredentialsUpdated(self.uf,
+ self.uf.getUserById("user1"), "testpassword"))
self.assertEqual(len(self.uf._data), 1)
self.assertEqual(self.uf._data[0][2], "user1")
self.assertEqual(self.uf._data[0][3], "testpassword")
More information about the Checkins
mailing list