src/pyams_content/component/theme/__init__.py
changeset 558 d9c6b1d7fefa
parent 501 3407e6940f6a
child 800 2b5460ecb254
--- a/src/pyams_content/component/theme/__init__.py	Fri May 25 08:05:13 2018 +0200
+++ b/src/pyams_content/component/theme/__init__.py	Fri May 25 15:48:59 2018 +0200
@@ -19,17 +19,13 @@
 from pyams_content.component.theme.interfaces import IThemesManagerTarget, IThemesManager, THEMES_MANAGER_KEY, \
     IThemesTarget, IThemesInfo, THEMES_INFO_KEY
 from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE
-from zope.annotation.interfaces import IAnnotations
 
 # import packages
 from persistent import Persistent
 from pyams_content.features.checker import BaseContentChecker
-from pyams_utils.adapter import adapter_config
-from pyramid.threadlocal import get_current_registry
+from pyams_utils.adapter import adapter_config, get_annotation_adapter
 from zope.container.contained import Contained
 from zope.interface import implementer
-from zope.lifecycleevent import ObjectCreatedEvent
-from zope.location import locate
 from zope.schema.fieldproperty import FieldProperty
 
 from pyams_content import _
@@ -46,13 +42,7 @@
 @adapter_config(context=IThemesManagerTarget, provides=IThemesManager)
 def themes_manager_factory(target):
     """Themes manager factory"""
-    annotations = IAnnotations(target)
-    manager = annotations.get(THEMES_MANAGER_KEY)
-    if manager is None:
-        manager = annotations[THEMES_MANAGER_KEY] = ThemesManager()
-        get_current_registry().notify(ObjectCreatedEvent(manager))
-        locate(manager, target, '++themes-manager++')
-    return manager
+    return get_annotation_adapter(target, THEMES_MANAGER_KEY, ThemesManager, name='++themes-manager++')
 
 
 @implementer(IThemesInfo)
@@ -65,13 +55,7 @@
 @adapter_config(context=IThemesTarget, provides=IThemesInfo)
 def themes_info_factory(target):
     """Themes info factory"""
-    annotations = IAnnotations(target)
-    info = annotations.get(THEMES_INFO_KEY)
-    if info is None:
-        info = annotations[THEMES_INFO_KEY] = ThemesInfo()
-        get_current_registry().notify(ObjectCreatedEvent(info))
-        locate(info, target, '++themes++')
-    return info
+    return get_annotation_adapter(target, THEMES_INFO_KEY, ThemesInfo, name='++themes++')
 
 
 @adapter_config(name='themes', context=IThemesTarget, provides=IContentChecker)