16 # import standard library |
16 # import standard library |
17 |
17 |
18 # import interfaces |
18 # import interfaces |
19 from pyams_content.component.theme.interfaces import IThemesManagerTarget, IThemesManager, THEMES_MANAGER_KEY, \ |
19 from pyams_content.component.theme.interfaces import IThemesManagerTarget, IThemesManager, THEMES_MANAGER_KEY, \ |
20 IThemesTarget, IThemesInfo, THEMES_INFO_KEY, ITagsManager, ITagsManagerTarget, TAGS_MANAGER_KEY, ITagsInfo, \ |
20 IThemesTarget, IThemesInfo, THEMES_INFO_KEY, ITagsManager, ITagsManagerTarget, TAGS_MANAGER_KEY, ITagsInfo, \ |
21 ITagsTarget, TAGS_INFO_KEY |
21 ITagsTarget, TAGS_INFO_KEY, ICollectionsManager, ICollectionsManagerTarget, COLLECTIONS_MANAGER_KEY, \ |
|
22 ICollectionsInfo, ICollectionsTarget, COLLECTIONS_INFO_KEY |
22 from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE |
23 from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE |
23 |
24 |
24 # import packages |
25 # import packages |
25 from persistent import Persistent |
26 from persistent import Persistent |
26 from pyams_content.features.checker import BaseContentChecker |
27 from pyams_content.features.checker import BaseContentChecker |
114 @adapter_config(name='themes', context=IThemesTarget, provides=IContentChecker) |
115 @adapter_config(name='themes', context=IThemesTarget, provides=IContentChecker) |
115 class ThemesContentChecker(BaseContentChecker): |
116 class ThemesContentChecker(BaseContentChecker): |
116 """Themes info content checker""" |
117 """Themes info content checker""" |
117 |
118 |
118 label = _("Themes") |
119 label = _("Themes") |
119 weight = 200 |
120 weight = 210 |
120 |
121 |
121 def inner_check(self, request): |
122 def inner_check(self, request): |
122 output = [] |
123 output = [] |
123 translate = request.localizer.translate |
124 translate = request.localizer.translate |
124 themes = IThemesInfo(self.context) |
125 themes = IThemesInfo(self.context) |
125 if not themes.themes: |
126 if not themes.themes: |
126 output.append(translate(ERROR_VALUE).format(field=translate(IThemesInfo['themes'].title), |
127 output.append(translate(ERROR_VALUE).format(field=translate(IThemesInfo['themes'].title), |
127 message=translate(_("no defined theme")))) |
128 message=translate(_("no defined theme")))) |
128 return output |
129 return output |
|
130 |
|
131 |
|
132 # |
|
133 # Collections management |
|
134 # |
|
135 |
|
136 @implementer(ICollectionsManager) |
|
137 class CollectionsManager(Persistent, Contained): |
|
138 """Collections manager persistent class""" |
|
139 |
|
140 thesaurus_name = FieldProperty(ICollectionsManager['thesaurus_name']) |
|
141 extract_name = FieldProperty(ICollectionsManager['extract_name']) |
|
142 |
|
143 |
|
144 @adapter_config(context=ICollectionsManagerTarget, provides=ICollectionsManager) |
|
145 def collections_manager_factory(target): |
|
146 """Collections manager factory""" |
|
147 return get_annotation_adapter(target, COLLECTIONS_MANAGER_KEY, CollectionsManager, name='++collections-manager++') |
|
148 |
|
149 |
|
150 @implementer(ICollectionsInfo) |
|
151 class CollectionsInfo(Persistent, Contained): |
|
152 """Collections info persistent class""" |
|
153 |
|
154 collections = FieldProperty(ICollectionsInfo['collections']) |
|
155 |
|
156 |
|
157 @adapter_config(context=ICollectionsTarget, provides=ICollectionsInfo) |
|
158 def collections_info_factory(target): |
|
159 """Collections info factory""" |
|
160 return get_annotation_adapter(target, COLLECTIONS_INFO_KEY, CollectionsInfo, name='++collections++') |
|
161 |
|
162 |
|
163 @adapter_config(name='collections', context=ICollectionsTarget, provides=IContentChecker) |
|
164 class CollectionsContentChecker(BaseContentChecker): |
|
165 """Collections info content checker""" |
|
166 |
|
167 label = _("Collections") |
|
168 weight = 215 |
|
169 |
|
170 def inner_check(self, request): |
|
171 output = [] |
|
172 translate = request.localizer.translate |
|
173 collections = ICollectionsInfo(self.context) |
|
174 if not collections.collections: |
|
175 output.append(translate(ERROR_VALUE).format(field=translate(ICollectionsInfo['collections'].title), |
|
176 message=translate(_("no defined collection")))) |
|
177 return output |