16 # import standard library |
16 # import standard library |
17 |
17 |
18 # import interfaces |
18 # import interfaces |
19 from pyams_content.component.theme.interfaces import IPortletThemesSettings, IPortletThemesSettingsTarget, \ |
19 from pyams_content.component.theme.interfaces import IPortletThemesSettings, IPortletThemesSettingsTarget, \ |
20 PORTLET_SETTINGS_THEMES_KEY |
20 PORTLET_SETTINGS_THEMES_KEY |
21 from zope.annotation.interfaces import IAnnotations |
|
22 from zope.traversing.interfaces import ITraversable |
21 from zope.traversing.interfaces import ITraversable |
23 |
22 |
24 # import packages |
23 # import packages |
25 from persistent import Persistent |
24 from persistent import Persistent |
26 from pyams_utils.adapter import adapter_config, ContextAdapter |
25 from pyams_utils.adapter import adapter_config, ContextAdapter, get_annotation_adapter |
27 from zope.container.contained import Contained |
26 from zope.container.contained import Contained |
28 from zope.interface import implementer |
27 from zope.interface import implementer |
29 from zope.location import locate |
|
30 |
28 |
31 |
29 |
32 @implementer(IPortletThemesSettings) |
30 @implementer(IPortletThemesSettings) |
33 class PortletThemesSettings(Persistent, Contained): |
31 class PortletThemesSettings(Persistent, Contained): |
34 """Portlet themes settings""" |
32 """Portlet themes settings""" |
35 |
33 |
36 |
34 |
37 @adapter_config(context=IPortletThemesSettingsTarget, provides=IPortletThemesSettings) |
35 @adapter_config(context=IPortletThemesSettingsTarget, provides=IPortletThemesSettings) |
38 def portlet_themes_settings_factory(context): |
36 def portlet_themes_settings_factory(context): |
39 """Portlet themes settings adapter""" |
37 """Portlet themes settings adapter""" |
40 annotations = IAnnotations(context) |
38 return get_annotation_adapter(context, PORTLET_SETTINGS_THEMES_KEY, PortletThemesSettings, name='++themes++') |
41 settings = annotations.get(PORTLET_SETTINGS_THEMES_KEY) |
|
42 if settings is None: |
|
43 settings = annotations[PORTLET_SETTINGS_THEMES_KEY] = PortletThemesSettings() |
|
44 locate(settings, context, '++themes++') |
|
45 return settings |
|
46 |
39 |
47 |
40 |
48 @adapter_config(name='themes', context=IPortletThemesSettingsTarget, provides=ITraversable) |
41 @adapter_config(name='themes', context=IPortletThemesSettingsTarget, provides=ITraversable) |
49 class ThemesPortletsSettingsTraverser(ContextAdapter): |
42 class ThemesPortletsSettingsTraverser(ContextAdapter): |
50 """++themes++ portlet settings adapter""" |
43 """++themes++ portlet settings adapter""" |