src/pyams_content/component/video/__init__.py
changeset 558 d9c6b1d7fefa
parent 555 8e8a14452567
child 967 1be26c1585fd
equal deleted inserted replaced
557:a78ade534b97 558:d9c6b1d7fefa
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
     9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
    12 from pyams_i18n.interfaces import II18nManager, INegotiator, II18n
       
    13 from pyams_utils.traversing import get_parent
       
    14 
    12 
    15 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    16 
    14 
    17 
    15 
    18 # import standard library
    16 # import standard library
    19 from persistent import Persistent
    17 from persistent import Persistent
    20 
    18 
    21 # import interfaces
    19 # import interfaces
    22 from pyams_content.component.video.interfaces import IExternalVideo, IExternalVideoProvider, IExternalVideoSettings
    20 from pyams_content.component.video.interfaces import IExternalVideo, IExternalVideoProvider, IExternalVideoSettings
    23 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE
    21 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE
    24 from zope.annotation import IAnnotations
    22 from pyams_i18n.interfaces import II18nManager, INegotiator, II18n
    25 
    23 
    26 # import packages
    24 # import packages
    27 from pyams_content.features.checker import BaseContentChecker, VALUE_OK
    25 from pyams_content.features.checker import BaseContentChecker, VALUE_OK
    28 from pyams_utils.adapter import adapter_config
    26 from pyams_utils.adapter import adapter_config, get_annotation_adapter
    29 from pyams_utils.registry import query_utility, get_utility
    27 from pyams_utils.registry import query_utility, get_utility
       
    28 from pyams_utils.traversing import get_parent
    30 from zope.container.contained import Contained
    29 from zope.container.contained import Contained
    31 from zope.interface import implementer
    30 from zope.interface import implementer
    32 from zope.location import locate
       
    33 from zope.schema.fieldproperty import FieldProperty
    31 from zope.schema.fieldproperty import FieldProperty
    34 
    32 
    35 from pyams_content import _
    33 from pyams_content import _
    36 
    34 
    37 
    35 
    60 @adapter_config(context=IExternalVideo, provides=IExternalVideoSettings)
    58 @adapter_config(context=IExternalVideo, provides=IExternalVideoSettings)
    61 def external_video_settings_factory(context):
    59 def external_video_settings_factory(context):
    62     """External video settings factory"""
    60     """External video settings factory"""
    63     if not context.provider_name:
    61     if not context.provider_name:
    64         return None
    62         return None
    65     annotations = IAnnotations(context)
    63     provider = context.get_provider()
    66     settings_key = EXTERNAL_VIDEO_SETTINGS_KEY.format(context.provider_name.lower())
    64     settings_key = EXTERNAL_VIDEO_SETTINGS_KEY.format(context.provider_name.lower())
    67     settings = annotations.get(settings_key)
    65     return get_annotation_adapter(context, settings_key,
    68     if settings is None:
    66                                   factory=lambda: IExternalVideoSettings(provider))
    69         provider = context.get_provider()
       
    70         if provider is not None:
       
    71             settings = annotations[settings_key] = IExternalVideoSettings(provider)
       
    72             locate(settings, context)
       
    73     return settings
       
    74 
    67 
    75 
    68 
    76 @adapter_config(context=IExternalVideo, provides=IContentChecker)
    69 @adapter_config(context=IExternalVideo, provides=IContentChecker)
    77 class ExternalVideoContentChecker(BaseContentChecker):
    70 class ExternalVideoContentChecker(BaseContentChecker):
    78     """External video content checker"""
    71     """External video content checker"""