paula: reorganized into one paula repo
[paula.git] / paula.authutil / trunk / src / paula / authutil / subscribers.py
blob2fe1f56e0e6cba671f5695d51b8d2c76c033eee7
1 # Copyright (c) 2008 by Florian Friesdorf
3 # GNU Affero General Public License (AGPL)
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License as
7 # published by the Free Software Foundation; either version 3 of the
8 # License, or (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU Affero General Public License for more details.
15 # You should have received a copy of the GNU Affero General Public
16 # License along with this program. If not, see
17 # <http://www.gnu.org/licenses/>.
18 """
19 """
20 __author__ = "Florian Friesdorf <flo@chaoflow.net>"
21 __docformat__ = "plaintext"
23 from zope.app.container.interfaces import IObjectAddedEvent
24 from zope.app.container.interfaces import IObjectRemovedEvent
26 from zope.component import adapter, queryUtility
28 from zope.location.interfaces import ILocation
30 from paula.authentication.interfaces import IAuthProvider
32 from paula.authutil.interfaces import IRWAuthProviders
33 from paula.authutil.interfaces import IAuthProviderAdaptable
36 @adapter(ILocation, IObjectAddedEvent)
37 def checkRegister(obj, event):
38 """A subscriber to ObjectAddedEvent
40 Registers an object with the nearest IRWAuthProviders, iff either
41 IAuthProviderAdaptable or IAuthProvider is provided by the object.
42 """
43 if not IAuthProviderAdaptable.providedBy(obj) and \
44 not IAuthProvider.providedBy(obj):
45 return
47 # we are registered globally and might run in a context without
48 # IRWAuthProviders
49 util = queryUtility(IRWAuthProviders) #, context=event.newParent)
50 # XXX: not working, util is False?!
51 #if util:
52 if util is not None:
53 util.register(obj)
56 @adapter(ILocation, IObjectRemovedEvent)
57 def checkUnregister(obj, event):
58 """A subscriber to ObjectRemovedEvent
60 Unregisters an object with the nearest IRWAuthProviders, iff either
61 IAuthProviderAdaptable or IAuthProvider is provided by the object.
62 """
63 if not IAuthProviderAdaptable.providedBy(obj) and \
64 not IAuthProvider.providedBy(obj):
65 return
67 # we are registered globally and might run in a context without
68 # IRWAuthProviders
69 util = queryUtility(IRWAuthProviders) #, context=event.oldParent)
70 # XXX: not working, apu is False?!
71 #if apu:
72 if util is not None:
73 try:
74 util.unregister(obj)
75 except KeyError:
76 pass