src/pyams_content/shared/common/manager.py
changeset 277 9649f8ce3b1c
parent 43 2136e95fb9a5
child 492 04503227569d
--- a/src/pyams_content/shared/common/manager.py	Fri Nov 10 12:07:43 2017 +0100
+++ b/src/pyams_content/shared/common/manager.py	Tue Nov 14 14:05:30 2017 +0100
@@ -16,7 +16,8 @@
 # import standard library
 
 # import interfaces
-from pyams_content.shared.common.interfaces import ISharedToolContainer, ISharedTool, ISharedToolRoles
+from pyams_content.interfaces import WEBMASTER_ROLE, PILOT_ROLE, MANAGER_ROLE, CONTRIBUTOR_ROLE
+from pyams_content.shared.common.interfaces import ISharedToolContainer, IBaseSharedTool, ISharedTool, ISharedToolRoles
 from pyams_security.interfaces import IDefaultProtectionPolicy
 from pyams_workflow.interfaces import IWorkflow
 from zope.annotation.interfaces import IAttributeAnnotatable
@@ -40,11 +41,11 @@
     short_name = FieldProperty(ISharedToolContainer['short_name'])
 
 
-@implementer(IDefaultProtectionPolicy, ISharedTool, ISharedToolRoles, IAttributeAnnotatable)
-class SharedTool(ProtectedObject, Folder, I18nManagerMixin):
-    """Shared tool"""
+@implementer(IDefaultProtectionPolicy, IBaseSharedTool, ISharedToolRoles, IAttributeAnnotatable)
+class BaseSharedTool(ProtectedObject, I18nManagerMixin):
+    """Base shared tool class"""
 
-    __roles__ = ('pyams.Webmaster', 'pyams.Pilot', 'pyams.Manager', 'pyams.Contributor')
+    __roles__ = (WEBMASTER_ROLE, PILOT_ROLE, MANAGER_ROLE, CONTRIBUTOR_ROLE)
 
     roles_interface = ISharedToolRoles
 
@@ -53,15 +54,21 @@
     managers = RolePrincipalsFieldProperty(ISharedToolRoles['managers'])
     contributors = RolePrincipalsFieldProperty(ISharedToolRoles['contributors'])
 
-    title = FieldProperty(ISharedTool['title'])
-    short_name = FieldProperty(ISharedTool['short_name'])
+    title = FieldProperty(IBaseSharedTool['title'])
+    short_name = FieldProperty(IBaseSharedTool['short_name'])
+
+    shared_content_workflow = FieldProperty(IBaseSharedTool['shared_content_workflow'])
+
+
+@implementer(ISharedTool)
+class SharedTool(Folder, BaseSharedTool):
+    """Shared tool class"""
 
     shared_content_type = None
     shared_content_factory = None
-    shared_content_workflow = FieldProperty(ISharedTool['shared_content_workflow'])
 
 
-@adapter_config(context=ISharedTool, provides=IWorkflow)
+@adapter_config(context=IBaseSharedTool, provides=IWorkflow)
 def SharedToolWorkflowAdapter(context):
     """Shared tool workflow adapter"""
     return query_utility(IWorkflow, name=context.shared_content_workflow)