diff -r dd66696cb871 -r 2b5460ecb254 src/pyams_content/component/theme/__init__.py --- a/src/pyams_content/component/theme/__init__.py Thu Jul 05 08:48:47 2018 +0200 +++ b/src/pyams_content/component/theme/__init__.py Thu Jul 05 08:53:43 2018 +0200 @@ -17,7 +17,8 @@ # import interfaces from pyams_content.component.theme.interfaces import IThemesManagerTarget, IThemesManager, THEMES_MANAGER_KEY, \ - IThemesTarget, IThemesInfo, THEMES_INFO_KEY + IThemesTarget, IThemesInfo, THEMES_INFO_KEY, ITagsManager, ITagsManagerTarget, TAGS_MANAGER_KEY, ITagsInfo, \ + ITagsTarget, TAGS_INFO_KEY from pyams_content.features.checker.interfaces import IContentChecker, ERROR_VALUE # import packages @@ -31,6 +32,58 @@ from pyams_content import _ +# +# Tags management +# + +@implementer(ITagsManager) +class TagsManager(Persistent, Contained): + """Tags manager persistent class""" + + thesaurus_name = FieldProperty(ITagsManager['thesaurus_name']) + extract_name = FieldProperty(ITagsManager['extract_name']) + + +@adapter_config(context=ITagsManagerTarget, provides=ITagsManager) +def tags_manager_factory(target): + """Tags manager factory""" + return get_annotation_adapter(target, TAGS_MANAGER_KEY, TagsManager, name='++tags-manager++') + + +@implementer(ITagsInfo) +class TagsInfo(Persistent, Contained): + """Tags info persistent class""" + + tags = FieldProperty(ITagsInfo['tags']) + + +@adapter_config(context=ITagsTarget, provides=ITagsInfo) +def tags_info_factory(target): + """Tags info factory""" + return get_annotation_adapter(target, TAGS_INFO_KEY, TagsInfo, name='++tags++') + + +@adapter_config(name='tags', context=ITagsTarget, provides=IContentChecker) +class TagsContentChecker(BaseContentChecker): + """Tags info content checker""" + + label = _("Tags") + weight = 205 + + def inner_check(self, request): + output = [] + translate = request.localizer.translate + tags = ITagsInfo(self.context) + if not tags.tags: + output.append(translate(ERROR_VALUE).format(field=translate(ITagsInfo['tags'].title), + message=translate(_("no defined tag")))) + return output + + +# +# Themes management +# + @implementer(IThemesManager) class ThemesManager(Persistent, Contained): """Themes manager persistent class"""