src/pyams_content/shared/common/__init__.py
changeset 277 9649f8ce3b1c
parent 273 d70e47b99ffb
child 305 b5967aacf4c1
--- a/src/pyams_content/shared/common/__init__.py	Fri Nov 10 12:07:43 2017 +0100
+++ b/src/pyams_content/shared/common/__init__.py	Tue Nov 14 14:05:30 2017 +0100
@@ -20,7 +20,8 @@
 from pyams_content.interfaces import IBaseContentInfo
 from pyams_content.features.checker.interfaces import IContentChecker, MISSING_VALUE, MISSING_LANG_VALUE
 from pyams_content.features.review.interfaces import IReviewComments
-from pyams_content.shared.common.interfaces import IWfSharedContent, IWfSharedContentRoles, ISharedContent, ISharedTool
+from pyams_content.shared.common.interfaces import IWfSharedContent, IWfSharedContentRoles, ISharedContent, \
+    IBaseSharedTool, ISharedSite
 from pyams_i18n.interfaces import II18nManager, II18n
 from pyams_security.interfaces import IDefaultProtectionPolicy
 from pyams_sequence.interfaces import ISequentialIdTarget, ISequentialIdInfo
@@ -40,7 +41,7 @@
 from pyams_security.utility import get_principal
 from pyams_utils.adapter import adapter_config, ContextAdapter
 from pyams_utils.date import format_datetime
-from pyams_utils.registry import query_utility
+from pyams_utils.registry import query_utility, get_utilities_for
 from pyams_utils.request import query_request, check_request
 from pyams_utils.timezone import tztime
 from pyams_utils.traversing import get_parent
@@ -56,6 +57,19 @@
 from pyams_content import _
 
 
+@vocabulary_config(name='PyAMS shared sites')
+class SharedSiteVocabulary(SimpleVocabulary):
+    """Shared sites vocabulary"""
+
+    interface = ISharedSite
+
+    def __init__(self, context):
+        request = query_request()
+        super(SharedSiteVocabulary, self).__init__([SimpleTerm(v, title=II18n(t).query_attribute('title',
+                                                                                                 request=request))
+                                                    for v, t in get_utilities_for(self.interface)])
+
+
 #
 # Content types management
 #
@@ -205,7 +219,7 @@
 @adapter_config(context=IWfSharedContent, provides=IWorkflow)
 def WfSharedContentWorkflowAdapter(context):
     """Shared content workflow adapter"""
-    parent = get_parent(context, ISharedTool)
+    parent = get_parent(context, IBaseSharedTool)
     return query_utility(IWorkflow, name=parent.shared_content_workflow)
 
 
@@ -251,7 +265,7 @@
 
     @property
     def workflow_name(self):
-        return get_parent(self, ISharedTool).shared_content_workflow
+        return get_parent(self, IBaseSharedTool).shared_content_workflow
 
 
 @adapter_config(context=ISharedContent, provides=IBaseContentInfo)
@@ -270,5 +284,5 @@
 @adapter_config(context=ISharedContent, provides=IWorkflow)
 def SharedContentWorkflowAdapter(context):
     """Shared content workflow adapter"""
-    parent = get_parent(context, ISharedTool)
+    parent = get_parent(context, IBaseSharedTool)
     return query_utility(IWorkflow, name=parent.shared_content_workflow)