--- a/src/pyams_content/shared/blog/manager.py Thu Mar 22 14:50:32 2018 +0100
+++ b/src/pyams_content/shared/blog/manager.py Thu Mar 22 14:52:22 2018 +0100
@@ -21,7 +21,9 @@
from pyams_content.component.theme.interfaces import IThemesManagerTarget
from pyams_content.features.preview.interfaces import IPreviewTarget
from pyams_content.reference.pictograms.interfaces import IPictogramManagerTarget
-from pyams_content.shared.blog.interfaces import IBlogManager, BLOG_CONTENT_TYPE, IBlogFolder
+from pyams_content.root.interfaces import ISiteRoot
+from pyams_content.shared.blog.interfaces import IBlogManager, IBlogFolder, IBlogFolderFactory, IBlogManagerFactory
+from pyams_content.shared.common.interfaces import ISharedContentFactory
from pyams_portal.interfaces import IPortalContext
from zope.annotation.interfaces import IAttributeAnnotatable
from zope.component.interfaces import ISite
@@ -29,8 +31,9 @@
# import packages
from pyams_content.shared.blog import BlogPost
-from pyams_content.shared.common.manager import SharedTool
+from pyams_content.shared.common.manager import BaseSharedTool
from pyams_skin.skin import UserSkinnableContent
+from pyams_utils.adapter import adapter_config
from pyams_utils.traversing import get_parent
from pyramid.events import subscriber
from zope.container.folder import Folder
@@ -51,20 +54,29 @@
@implementer(IBlogManager, IParagraphFactorySettings, IThemesManagerTarget, IPictogramManagerTarget,
IIllustrationTarget, IPortalContext, IPreviewTarget, IAttributeAnnotatable)
-class BlogManager(SharedTool, UserSkinnableContent):
+class BlogManager(Folder, BaseSharedTool, UserSkinnableContent):
"""Nlog manager class"""
- folder_factory = BlogFolder
-
- shared_content_type = BLOG_CONTENT_TYPE
- shared_content_factory = BlogPost
-
allowed_paragraphs = FieldProperty(IParagraphFactorySettings['allowed_paragraphs'])
auto_created_paragraphs = FieldProperty(IParagraphFactorySettings['auto_created_paragraphs'])
sequence_name = '' # use default sequence generator
sequence_prefix = ''
+ @property
+ def folder_factory(self):
+ return IBlogFolderFactory(self, BlogFolder)
+
+ @property
+ def topic_content_factory(self):
+ return ISharedContentFactory(self, None)
+
+ @property
+ def topic_content_type(self):
+ factory = self.topic_content_factory
+ if factory is not None:
+ return factory.content_class.content_type
+
def is_deletable(self):
for element in self.values():
if not element.is_deletable():
@@ -72,6 +84,21 @@
return True
+@adapter_config(context=ISiteRoot, provides=IBlogManagerFactory)
+def SiteRootBlogManagerFactory(context):
+ return BlogManager
+
+
+@adapter_config(context=IBlogManager, provides=IBlogFolderFactory)
+def BlogManagerFolderFactory(context):
+ return BlogFolder
+
+
+@adapter_config(context=IBlogManager, provides=ISharedContentFactory)
+def BlogManagerTopicFactory(context):
+ return BlogPost
+
+
@subscriber(IObjectAddedEvent, context_selector=IBlogManager)
def handle_added_blog_manager(event):
"""Register blog manager when added"""