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