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 |
12 |
13 from persistent import Persistent |
13 from persistent import Persistent |
|
14 from pyramid.events import subscriber |
14 from zope.container.contained import Contained |
15 from zope.container.contained import Contained |
|
16 from zope.interface import alsoProvides |
|
17 from zope.lifecycleevent import IObjectAddedEvent |
15 from zope.schema.fieldproperty import FieldProperty |
18 from zope.schema.fieldproperty import FieldProperty |
16 |
19 |
17 from pyams_content.component.theme.interfaces import COLLECTIONS_INFO_KEY, \ |
20 from pyams_content.component.theme.interfaces import COLLECTIONS_INFO_KEY, \ |
18 COLLECTIONS_MANAGER_KEY, ICollectionsInfo, ICollectionsManager, ICollectionsManagerTarget, \ |
21 COLLECTIONS_MANAGER_KEY, ICollectionsInfo, ICollectionsManager, ICollectionsManagerTarget, \ |
19 ICollectionsTarget, ITagsInfo, ITagsManager, ITagsManagerTarget, ITagsTarget, IThemesInfo, \ |
22 ICollectionsTarget, ITagsInfo, ITagsManager, ITagsManagerTarget, ITagsTarget, IThemesInfo, \ |
20 IThemesManager, IThemesManagerTarget, IThemesTarget, TAGS_INFO_KEY, TAGS_MANAGER_KEY, \ |
23 IThemesManager, IThemesManagerTarget, IThemesTarget, TAGS_INFO_KEY, TAGS_MANAGER_KEY, \ |
21 THEMES_INFO_KEY, THEMES_MANAGER_KEY |
24 THEMES_INFO_KEY, THEMES_MANAGER_KEY |
22 from pyams_content.features.checker import BaseContentChecker |
25 from pyams_content.features.checker import BaseContentChecker |
23 from pyams_content.features.checker.interfaces import ERROR_VALUE, IContentChecker |
26 from pyams_content.features.checker.interfaces import ERROR_VALUE, IContentChecker |
|
27 from pyams_content.shared.site.interfaces import ISiteFolder |
24 from pyams_utils.adapter import adapter_config, get_annotation_adapter |
28 from pyams_utils.adapter import adapter_config, get_annotation_adapter |
25 from pyams_utils.factory import factory_config |
29 from pyams_utils.factory import factory_config |
|
30 from pyams_utils.inherit import BaseInheritInfo, InheritedFieldProperty |
26 |
31 |
27 |
32 |
28 __docformat__ = 'restructuredtext' |
33 __docformat__ = 'restructuredtext' |
29 |
34 |
30 from pyams_content import _ |
35 from pyams_content import _ |
102 return get_annotation_adapter(target, THEMES_MANAGER_KEY, IThemesManager, |
107 return get_annotation_adapter(target, THEMES_MANAGER_KEY, IThemesManager, |
103 name='++themes-manager++') |
108 name='++themes-manager++') |
104 |
109 |
105 |
110 |
106 @factory_config(IThemesInfo) |
111 @factory_config(IThemesInfo) |
107 class ThemesInfo(Persistent, Contained): |
112 class ThemesInfo(BaseInheritInfo, Persistent, Contained): |
108 """Themes info persistent class""" |
113 """Themes info persistent class""" |
109 |
114 |
110 themes = FieldProperty(IThemesInfo['themes']) |
115 adapted_interface = IThemesInfo |
|
116 target_interface = IThemesTarget |
|
117 |
|
118 _themes = FieldProperty(IThemesInfo['themes']) |
|
119 themes = InheritedFieldProperty(IThemesInfo['themes']) |
111 |
120 |
112 |
121 |
113 @adapter_config(context=IThemesTarget, provides=IThemesInfo) |
122 @adapter_config(context=IThemesTarget, provides=IThemesInfo) |
114 def themes_info_factory(target): |
123 def themes_info_factory(target): |
115 """Themes info factory""" |
124 """Themes info factory""" |
133 field=translate(IThemesInfo['themes'].title), |
142 field=translate(IThemesInfo['themes'].title), |
134 message=translate(_("no defined theme")))) |
143 message=translate(_("no defined theme")))) |
135 return output |
144 return output |
136 |
145 |
137 |
146 |
|
147 @subscriber(IObjectAddedEvent, context_selector=ISiteFolder, parent_selector=IThemesTarget) |
|
148 def handle_added_site_folder(event): |
|
149 """Handle site folder when added to a themes target""" |
|
150 alsoProvides(event.object, IThemesTarget) |
|
151 |
|
152 |
138 # |
153 # |
139 # Collections management |
154 # Collections management |
140 # |
155 # |
141 |
156 |
142 @factory_config(ICollectionsManager) |
157 @factory_config(ICollectionsManager) |