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""" |