src/pyams_content/shared/view/theme.py
changeset 558 d9c6b1d7fefa
parent 501 3407e6940f6a
child 606 118d32d0ac38
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 IThemesInfo
    19 from pyams_content.component.theme.interfaces import IThemesInfo
    20 from pyams_content.shared.view.interfaces import IWfView, IViewSettings, IViewThemesSettings, VIEW_THEMES_SETTINGS_KEY
    20 from pyams_content.shared.view.interfaces import IWfView, IViewSettings, IViewThemesSettings, VIEW_THEMES_SETTINGS_KEY
    21 from zope.annotation.interfaces import IAnnotations
       
    22 
    21 
    23 # import packages
    22 # import packages
    24 from persistent import Persistent
    23 from persistent import Persistent
    25 from pyams_utils.adapter import adapter_config
    24 from pyams_utils.adapter import adapter_config, get_annotation_adapter
    26 from pyramid.threadlocal import get_current_registry
       
    27 from zope.container.contained import Contained
    25 from zope.container.contained import Contained
    28 from zope.interface import implementer
    26 from zope.interface import implementer
    29 from zope.lifecycleevent import ObjectCreatedEvent
       
    30 from zope.location import locate
       
    31 from zope.schema.fieldproperty import FieldProperty
    27 from zope.schema.fieldproperty import FieldProperty
    32 
    28 
    33 
    29 
    34 @implementer(IViewThemesSettings)
    30 @implementer(IViewThemesSettings)
    35 class ViewThemesSettings(Persistent, Contained):
    31 class ViewThemesSettings(Persistent, Contained):
    58 
    54 
    59 @adapter_config(context=IWfView, provides=IViewThemesSettings)
    55 @adapter_config(context=IWfView, provides=IViewThemesSettings)
    60 @adapter_config(name='themes', context=IWfView, provides=IViewSettings)
    56 @adapter_config(name='themes', context=IWfView, provides=IViewSettings)
    61 def view_themes_settings_factory(view):
    57 def view_themes_settings_factory(view):
    62     """View themes settings factory"""
    58     """View themes settings factory"""
    63     annotations = IAnnotations(view)
    59     return get_annotation_adapter(view, VIEW_THEMES_SETTINGS_KEY, ViewThemesSettings,
    64     settings = annotations.get(VIEW_THEMES_SETTINGS_KEY)
    60                                   name='++view:themes++')
    65     if settings is None:
       
    66         settings = annotations[VIEW_THEMES_SETTINGS_KEY] = ViewThemesSettings()
       
    67         get_current_registry().notify(ObjectCreatedEvent(settings))
       
    68         locate(settings, view, '++view:themes++')
       
    69     return settings