src/pyams_content/component/video/__init__.py
changeset 558 d9c6b1d7fefa
parent 555 8e8a14452567
child 967 1be26c1585fd
--- a/src/pyams_content/component/video/__init__.py	Fri May 25 08:05:13 2018 +0200
+++ b/src/pyams_content/component/video/__init__.py	Fri May 25 15:48:59 2018 +0200
@@ -9,8 +9,6 @@
 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
 # FOR A PARTICULAR PURPOSE.
 #
-from pyams_i18n.interfaces import II18nManager, INegotiator, II18n
-from pyams_utils.traversing import get_parent
 
 __docformat__ = 'restructuredtext'
 
@@ -21,15 +19,15 @@
 # import interfaces
 from pyams_content.component.video.interfaces import IExternalVideo, IExternalVideoProvider, IExternalVideoSettings
 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE
-from zope.annotation import IAnnotations
+from pyams_i18n.interfaces import II18nManager, INegotiator, II18n
 
 # import packages
 from pyams_content.features.checker import BaseContentChecker, VALUE_OK
-from pyams_utils.adapter import adapter_config
+from pyams_utils.adapter import adapter_config, get_annotation_adapter
 from pyams_utils.registry import query_utility, get_utility
+from pyams_utils.traversing import get_parent
 from zope.container.contained import Contained
 from zope.interface import implementer
-from zope.location import locate
 from zope.schema.fieldproperty import FieldProperty
 
 from pyams_content import _
@@ -62,15 +60,10 @@
     """External video settings factory"""
     if not context.provider_name:
         return None
-    annotations = IAnnotations(context)
+    provider = context.get_provider()
     settings_key = EXTERNAL_VIDEO_SETTINGS_KEY.format(context.provider_name.lower())
-    settings = annotations.get(settings_key)
-    if settings is None:
-        provider = context.get_provider()
-        if provider is not None:
-            settings = annotations[settings_key] = IExternalVideoSettings(provider)
-            locate(settings, context)
-    return settings
+    return get_annotation_adapter(context, settings_key,
+                                  factory=lambda: IExternalVideoSettings(provider))
 
 
 @adapter_config(context=IExternalVideo, provides=IContentChecker)