src/pyams_content/component/theme/__init__.py
changeset 800 2b5460ecb254
parent 558 d9c6b1d7fefa
child 829 f933926ed0a1
--- 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"""