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