src/pyams_content/shared/common/types.py
changeset 558 d9c6b1d7fefa
parent 501 3407e6940f6a
child 826 eb16b1127e06
--- a/src/pyams_content/shared/common/types.py	Fri May 25 08:05:13 2018 +0200
+++ b/src/pyams_content/shared/common/types.py	Fri May 25 15:48:59 2018 +0200
@@ -30,17 +30,13 @@
 from persistent import Persistent
 from pyams_content.shared.common.manager import SharedTool
 from pyams_i18n.property import I18nFileProperty
-from pyams_utils.adapter import adapter_config, ContextAdapter
-from pyams_utils.registry import get_global_registry
+from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter
 from pyams_utils.request import check_request
 from pyams_utils.traversing import get_parent
 from pyams_utils.vocabulary import vocabulary_config
-from zope.annotation.interfaces import IAnnotations
 from zope.container.contained import Contained
 from zope.container.ordered import OrderedContainer
 from zope.interface import implementer
-from zope.lifecycleevent import ObjectCreatedEvent
-from zope.location import locate
 from zope.schema import getFieldsInOrder
 from zope.schema.fieldproperty import FieldProperty
 from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm
@@ -93,14 +89,7 @@
 @adapter_config(context=ITypedSharedTool, provides=ITypedDataManager)
 def typed_shared_tool_data_manager_factory(context):
     """Types shared tool data manager factory"""
-    annotations = IAnnotations(context)
-    manager = annotations.get(DATA_MANAGER_ANNOTATION_KEY)
-    if manager is None:
-        manager = annotations[DATA_MANAGER_ANNOTATION_KEY] = TypedDataManager()
-        registry = get_global_registry()
-        registry.notify(ObjectCreatedEvent(manager))
-        locate(manager, context, '++types++')
-    return manager
+    return get_annotation_adapter(context, DATA_MANAGER_ANNOTATION_KEY, TypedDataManager, name='++types++')
 
 
 @adapter_config(name='types', context=ITypedSharedTool, provides=ITraversable)