src/pyams_content/shared/site/manager.py
changeset 294 8742c8ac126c
parent 277 9649f8ce3b1c
child 300 49e8f3cef75a
--- a/src/pyams_content/shared/site/manager.py	Sun Nov 26 09:57:42 2017 +0100
+++ b/src/pyams_content/shared/site/manager.py	Sun Nov 26 09:58:07 2017 +0100
@@ -18,7 +18,9 @@
 # import interfaces
 from pyams_content.component.paragraph.interfaces import IParagraphFactorySettings
 from pyams_content.component.theme.interfaces import IThemesManagerTarget
-from pyams_content.shared.site.interfaces import ISiteManager
+from pyams_content.interfaces import MANAGE_SITE_PERMISSION
+from pyams_content.shared.site.interfaces import ISiteManager, TOPIC_CONTENT_TYPE
+from pyams_form.interfaces.form import IFormContextPermissionChecker
 from pyams_i18n.interfaces import II18n
 from pyams_portal.interfaces import IPortalContext
 from zope.annotation.interfaces import IAttributeAnnotatable
@@ -27,7 +29,11 @@
 
 # import packages
 from pyams_content.shared.common.manager import BaseSharedTool
+from pyams_content.shared.site import Topic
+from pyams_content.shared.site.container import SiteContainerMixin
+from pyams_content.shared.site.folder import SiteFolder
 from pyams_skin.skin import UserSkinnableContent
+from pyams_utils.adapter import adapter_config, ContextAdapter
 from pyams_utils.registry import get_utilities_for
 from pyams_utils.request import query_request
 from pyams_utils.traversing import get_parent
@@ -39,13 +45,22 @@
 from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary
 
 
-@implementer(ISiteManager, IParagraphFactorySettings, IThemesManagerTarget, IAttributeAnnotatable, IPortalContext)
-class SiteManager(OrderedContainer, BaseSharedTool, UserSkinnableContent):
+@implementer(ISiteManager, IParagraphFactorySettings, IThemesManagerTarget,
+             IPortalContext, IAttributeAnnotatable)
+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 = ''
+
 
 @subscriber(IObjectAddedEvent, context_selector=ISiteManager)
 def handle_added_site_manager(event):
@@ -65,6 +80,13 @@
         registry.unregisterUtility(event.object, ISiteManager, name=event.object.__name__)
 
 
+@adapter_config(context=ISiteManager, provides=IFormContextPermissionChecker)
+class SiteManagerPermissionChecker(ContextAdapter):
+    """Site manager edit permission checker"""
+
+    edit_permission = MANAGE_SITE_PERMISSION
+
+
 @vocabulary_config(name='PyAMS site managers')
 class SiteManagerVocabulary(SimpleVocabulary):
     """Site manager vocabulary"""