src/pyams_content/component/theme/portlet.py
changeset 558 d9c6b1d7fefa
parent 501 3407e6940f6a
child 829 f933926ed0a1
equal deleted inserted replaced
557:a78ade534b97 558:d9c6b1d7fefa
    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"""