paula: removed old per-repo trunk subdirs
[paula.git] / paula.grouputil / src / paula / grouputil / subscribers.py
blobd5836a2945f477449c3494fcc5eb45ba3ddb731b
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.grouputil.interfaces import IMembershipProvider
31 from paula.grouputil.interfaces import IMembershipProviderAdaptable
32 from paula.grouputil.interfaces import IRWMemberships
35 @adapter(ILocation, IObjectAddedEvent)
36 def checkRegister(obj, event):
37 """A subscriber to ObjectAddedEvent
38 """
39 if not IMembershipProviderAdaptable.providedBy(obj) and \
40 not IMembershipProvider.providedBy(obj):
41 return
43 # we are registered globally and might run in a context without
44 # IRWMemberships
45 util = queryUtility(IRWMemberships) #, context=event.newParent)
46 # XXX: not working, util is False?!
47 #if util:
48 if util is not None:
49 util.register(obj)
52 @adapter(ILocation, IObjectRemovedEvent)
53 def checkUnregister(obj, event):
54 """A subscriber to ObjectRemovedEvent
55 """
56 if not IMembershipProviderAdaptable.providedBy(obj) and \
57 not IMembershipProvider.providedBy(obj):
58 return
60 # we are registered globally and might run in a context without
61 # IRWMemberships
62 util = queryUtility(IRWMemberships) #, context=event.newParent)
63 # XXX: not working, util is False?!
64 #if util:
65 if util is not None:
66 try:
67 util.unregister(obj)
68 except KeyError:
69 pass