src/pyams_content/root/zmi/__init__.py
changeset 277 9649f8ce3b1c
parent 154 b07b899e9c1f
child 329 f4566bf0c917
--- a/src/pyams_content/root/zmi/__init__.py	Fri Nov 10 12:07:43 2017 +0100
+++ b/src/pyams_content/root/zmi/__init__.py	Tue Nov 14 14:05:30 2017 +0100
@@ -20,7 +20,7 @@
 from pyams_content.interfaces import PUBLISH_CONTENT_PERMISSION, MANAGE_SITE_ROOT_PERMISSION
 from pyams_content.profile.interfaces import IAdminProfile
 from pyams_content.root.interfaces import ISiteRoot
-from pyams_content.shared.common.interfaces import ISharedTool, IManagerRestrictions
+from pyams_content.shared.common.interfaces import IBaseSharedTool, IManagerRestrictions
 from pyams_content.shared.common.interfaces.zmi import ISiteRootDashboardTable
 from pyams_content.zmi.interfaces import IDashboardMenu, IMyDashboardMenu, IAllContentsMenu
 from pyams_i18n.interfaces import II18n
@@ -34,11 +34,13 @@
 from pyams_zmi.layer import IAdminLayer
 from z3c.table.interfaces import IValues, IColumn
 from zope.dublincore.interfaces import IZopeDublinCore
+from zope.intid.interfaces import IIntIds
 
 # import packages
 from hypatia.catalog import CatalogQuery
-from hypatia.query import And, Or, Any, Eq
+from hypatia.query import And, Or, Any, Eq, Any
 from pyams_catalog.query import CatalogResultSet
+from pyams_content.shared.common import CONTENT_TYPES
 from pyams_content.shared.common.zmi.dashboard import BaseDashboardTable as BaseDashboardTableBase
 from pyams_pagelet.pagelet import pagelet_config
 from pyams_skin.container import ContainerView
@@ -145,11 +147,12 @@
 
     @property
     def values(self):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
         params = None
-        for tool in get_all_utilities_registered_for(ISharedTool):
+        for tool in get_all_utilities_registered_for(IBaseSharedTool):
             workflow = IWorkflow(tool)
-            query = Eq(catalog['content_type'], tool.shared_content_type) & \
+            query = Eq(catalog['parents'], intids.register(tool)) & \
                     Any(catalog['workflow_state'], workflow.waiting_states)
             params = params | query if params else query
         return filter(self.check_access,
@@ -190,11 +193,12 @@
 
     @property
     def values(self):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
         params = None
-        for tool in get_all_utilities_registered_for(ISharedTool):
+        for tool in get_all_utilities_registered_for(IBaseSharedTool):
             workflow = IWorkflow(tool)
-            query = Eq(catalog['content_type'], tool.shared_content_type) & \
+            query = Eq(catalog['parents'], intids.register(tool)) & \
                     Any(catalog['workflow_state'], workflow.waiting_states) & \
                     Eq(catalog['workflow_principal'], self.request.principal.id)
             params = params | query if params else query
@@ -228,10 +232,12 @@
 
     @property
     def values(self):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
         params = None
-        for tool in get_all_utilities_registered_for(ISharedTool):
-            query = And(Eq(catalog['content_type'], tool.shared_content_type),
+        for tool in get_all_utilities_registered_for(IBaseSharedTool):
+            query = And(Eq(catalog['parents'], intids.register(tool)),
+                        Any(catalog['content_type'], CONTENT_TYPES.keys()),
                         Or(Eq(catalog['role:owner'], self.request.principal.id),
                            Eq(catalog['role:contributor'], self.request.principal.id)))
             params = params | query if params else query
@@ -287,11 +293,13 @@
 
     @property
     def values(self):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
         profile = IAdminProfile(self.request.principal)
         params = None
-        for tool in get_all_utilities_registered_for(ISharedTool):
-            query = And(Eq(catalog['content_type'], tool.shared_content_type),
+        for tool in get_all_utilities_registered_for(IBaseSharedTool):
+            query = And(Eq(catalog['parents'], intids.register(tool)),
+                        Any(catalog['content_type'], CONTENT_TYPES.keys()),
                         Any(catalog['oid'], profile.favorites or ()))
             params = params | query if params else query
         return unique(map(lambda x: IWorkflowVersions(x).get_last_versions()[0],
@@ -346,11 +354,12 @@
 
     @property
     def values(self):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
         params = None
-        for tool in get_all_utilities_registered_for(ISharedTool):
+        for tool in get_all_utilities_registered_for(IBaseSharedTool):
             workflow = IWorkflow(tool)
-            query = And(Eq(catalog['content_type'], tool.shared_content_type),
+            query = And(Eq(catalog['parents'], intids.register(tool)),
                         Or(Eq(catalog['role:owner'], self.request.principal.id),
                            Eq(catalog['role:contributor'], self.request.principal.id)),
                         Eq(catalog['workflow_state'], workflow.initial_state))
@@ -406,11 +415,12 @@
 
     @property
     def values(self):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
         params = None
-        for tool in get_all_utilities_registered_for(ISharedTool):
+        for tool in get_all_utilities_registered_for(IBaseSharedTool):
             workflow = IWorkflow(tool)
-            query = And(Eq(catalog['content_type'], tool.shared_content_type),
+            query = And(Eq(catalog['parents'], intids.register(tool)),
                         Or(Eq(catalog['role:owner'], self.request.principal.id),
                            Eq(catalog['role:contributor'], self.request.principal.id)),
                         Any(catalog['workflow_state'], workflow.waiting_states))
@@ -466,11 +476,12 @@
 
     @property
     def values(self):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
         params = None
-        for tool in get_all_utilities_registered_for(ISharedTool):
+        for tool in get_all_utilities_registered_for(IBaseSharedTool):
             workflow = IWorkflow(tool)
-            query = And(Eq(catalog['content_type'], tool.shared_content_type),
+            query = And(Eq(catalog['parents'], intids.register(tool)),
                         Or(Eq(catalog['role:owner'], self.request.principal.id),
                            Eq(catalog['role:contributor'], self.request.principal.id)),
                         Any(catalog['workflow_state'], workflow.published_states))
@@ -526,11 +537,12 @@
 
     @property
     def values(self):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
         params = None
-        for tool in get_all_utilities_registered_for(ISharedTool):
+        for tool in get_all_utilities_registered_for(IBaseSharedTool):
             workflow = IWorkflow(tool)
-            query = And(Eq(catalog['content_type'], tool.shared_content_type),
+            query = And(Eq(catalog['parents'], intids.register(tool)),
                         Or(Eq(catalog['role:owner'], self.request.principal.id),
                            Eq(catalog['role:contributor'], self.request.principal.id)),
                         Any(catalog['workflow_state'], workflow.retired_states))
@@ -587,12 +599,13 @@
 
     @property
     def values(self):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
         params = None
         principal_id = self.request.principal.id
-        for tool in get_all_utilities_registered_for(ISharedTool):
+        for tool in get_all_utilities_registered_for(IBaseSharedTool):
             workflow = IWorkflow(tool)
-            query = And(Eq(catalog['content_type'], tool.shared_content_type),
+            query = And(Eq(catalog['parents'], intids.register(tool)),
                         Or(Eq(catalog['role:owner'], principal_id),
                            Eq(catalog['role:contributor'], principal_id)),
                         Any(catalog['workflow_state'], workflow.archived_states))
@@ -676,11 +689,12 @@
 
     @property
     def values(self):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
         params = None
-        for tool in get_all_utilities_registered_for(ISharedTool):
+        for tool in get_all_utilities_registered_for(IBaseSharedTool):
             workflow = IWorkflow(tool)
-            query = And(Eq(catalog['content_type'], tool.shared_content_type),
+            query = And(Eq(catalog['parents'], intids.register(tool)),
                         Any(catalog['workflow_state'], workflow.published_states))
             params = params | query if params else query
         return unique(CatalogResultSet(CatalogQuery(catalog).query(params,
@@ -742,10 +756,12 @@
 
     @property
     def values(self):
+        intids = get_utility(IIntIds)
         catalog = get_utility(ICatalog)
         params = None
-        for tool in get_all_utilities_registered_for(ISharedTool):
-            query = Eq(catalog['content_type'], tool.shared_content_type)
+        for tool in get_all_utilities_registered_for(IBaseSharedTool):
+            query = Eq(catalog['parents'], intids.register(tool)) & \
+                    Any(catalog['content_type'], CONTENT_TYPES.keys())
             params = params | query if params else query
         return unique(CatalogResultSet(CatalogQuery(catalog).query(params,
                                                                    limit=50,