paula.testing: test for finding txt files + minor bugfix
[paula/paual.testing.git] / paula.proputil / src / paula / proputil / subscribers.py
blobf749827771a206f039a786529a36a3d3d46c0a22
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.properties.interfaces import IPropertyProvider
32 from paula.proputil.interfaces import IPropertyProviderAdaptable
33 from paula.proputil.interfaces import IRWPropertyProviders
36 @adapter(ILocation, IObjectAddedEvent)
37 def checkRegister(obj, event):
38 """A subscriber to ObjectAddedEvent
40 Registers an object with all nearest IRWPropertyProviders, iff
41 IPropertyProviderAdaptable is provided by the object.
42 """
43 if not IPropertyProviderAdaptable.providedBy(obj) and \
44 not IPropertyProvider.providedBy(obj):
45 return
47 # we are registered globally and might run in a context without
48 # IRWPropertyProviders
49 util = queryUtility(IRWPropertyProviders) #, context=event.newParent)
50 # XXX: not working, ppu is False?!
51 #if ppu:
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 from all nearest IRWPropertyProviders, iff
61 IPropertyProviderAdaptable is provided by the object.
62 """
63 if not IPropertyProviderAdaptable.providedBy(obj) and \
64 not IPropertyProvider.providedBy(obj):
65 return
67 # we are registered globally and might run in a context without
68 # IRWPropertyProviders
69 util = queryUtility(IRWPropertyProviders) #, context=event.oldParent)
70 # XXX: not working, ppu is False?!
71 #if ppu:
72 if util is not None:
73 try:
74 util.unregister(obj)
75 except KeyError:
76 pass