--- a/src/pyams_content/shared/site/manager.py Thu Mar 22 14:50:32 2018 +0100
+++ b/src/pyams_content/shared/site/manager.py Thu Mar 22 14:52:22 2018 +0100
@@ -22,7 +22,9 @@
from pyams_content.features.preview.interfaces import IPreviewTarget
from pyams_content.interfaces import MANAGE_SITE_PERMISSION
from pyams_content.reference.pictograms.interfaces import IPictogramManagerTarget
-from pyams_content.shared.site.interfaces import ISiteManager, TOPIC_CONTENT_TYPE
+from pyams_content.root.interfaces import ISiteRoot
+from pyams_content.shared.common.interfaces import ISharedContentFactory
+from pyams_content.shared.site.interfaces import ISiteManager, ISiteManagerFactory, ISiteFolderFactory
from pyams_form.interfaces.form import IFormContextPermissionChecker
from pyams_i18n.interfaces import II18n
from pyams_portal.interfaces import IPortalContext
@@ -32,7 +34,7 @@
# import packages
from pyams_content.shared.common.manager import BaseSharedTool
-from pyams_content.shared.site import Topic
+from pyams_content.shared.site import Topic, ISiteContainer
from pyams_content.shared.site.container import SiteContainerMixin
from pyams_content.shared.site.folder import SiteFolder
from pyams_skin.skin import UserSkinnableContent
@@ -53,17 +55,26 @@
class SiteManager(SiteContainerMixin, OrderedContainer, BaseSharedTool, UserSkinnableContent):
"""Site manager persistent class"""
- folder_factory = SiteFolder
-
- topic_content_type = TOPIC_CONTENT_TYPE
- topic_content_factory = Topic
-
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 ISiteFolderFactory(self, SiteFolder)
+
+ @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():
@@ -71,6 +82,21 @@
return True
+@adapter_config(context=ISiteRoot, provides=ISiteManagerFactory)
+def SiteRootSiteManagerFactory(context):
+ return SiteManager
+
+
+@adapter_config(context=ISiteManager, provides=ISiteFolderFactory)
+def SiteManagerFolderFactory(context):
+ return SiteFolder
+
+
+@adapter_config(context=ISiteContainer, provides=ISharedContentFactory)
+def SiteManagerSharedContentFactory(context):
+ return Topic
+
+
@subscriber(IObjectAddedEvent, context_selector=ISiteManager)
def handle_added_site_manager(event):
"""Register site manager when added"""