| Trees | Indices | Help |
|
|---|
|
|
1 ##############################################################################
2 #
3 # Copyright (C) Zenoss, Inc. 2010, all rights reserved.
4 #
5 # This content is made available according to terms specified in
6 # License.zenoss under the directory where your Zenoss product is installed.
7 #
8 ##############################################################################
9
10
11 import logging
12 from zope.event import notify
13 from zope.component import adapter
14 from zope.interface import implements
15 from zope.component.interfaces import ObjectEvent
16 from zope.container.interfaces import IObjectMovedEvent, IObjectRemovedEvent
17 from OFS.interfaces import IObjectWillBeMovedEvent, IObjectWillBeAddedEvent
18 from .interfaces import IGUIDEvent, IGUIDManager, IGloballyIdentifiable
19 from .interfaces import IGlobalIdentifier
20
21 log = logging.getLogger('zen.UUID')
31
35 mgr = IGUIDManager(object)
36 if event.new:
37 mgr.setObject(event.new, object)
38 if event.update_global_catalog:
39 try:
40 catalog = object.global_catalog
41 catalog.catalog_object(object, idxs=(), update_metadata=True)
42 except Exception:
43 log.exception('Encountered a guid exception')
44 if event.old and event.old != event.new:
45 # When we move a component around,
46 # we don't want to remove the guid
47 # from the catalog
48 if mgr.getPath(event.old) == object.getPrimaryUrlPath():
49 mgr.remove(event.old)
50
51
52 @adapter(IGloballyIdentifiable, IObjectMovedEvent)
53 -def refireEventOnObjectAddOrMove(object, event):
54 if not IObjectRemovedEvent.providedBy(event):
55 oldguid = IGlobalIdentifier(object).getGUID()
56 if oldguid is None:
57 IGlobalIdentifier(object).create()
58 else:
59 # Refire in the case where an object already has a guid
60 # but that guid has been removed from the guid table
61 notify(GUIDEvent(object, oldguid, oldguid))
62
63
64 @adapter(IGloballyIdentifiable, IObjectWillBeMovedEvent)
65 -def refireEventOnObjectBeforeRemove(object, event):
69
| Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1.1812 on Mon Jul 30 17:11:21 2012 | http://epydoc.sourceforge.net |