--- a/src/pyams_content/shared/common/zmi/dashboard.py Fri Nov 10 12:07:43 2017 +0100
+++ b/src/pyams_content/shared/common/zmi/dashboard.py Tue Nov 14 14:05:30 2017 +0100
@@ -19,7 +19,7 @@
from hypatia.interfaces import ICatalog
from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION, PUBLISH_CONTENT_PERMISSION
from pyams_content.profile.interfaces import IAdminProfile
-from pyams_content.shared.common.interfaces import ISharedTool, IWfSharedContent, IManagerRestrictions
+from pyams_content.shared.common.interfaces import IBaseSharedTool, IWfSharedContent, IManagerRestrictions
from pyams_content.shared.common.interfaces.zmi import IDashboardTable, ISharedToolDashboardTable
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, Eq, Any
from pyams_catalog.query import CatalogResultSet
+from pyams_content.shared.common import CONTENT_TYPES
from pyams_content.skin import pyams_content
from pyams_pagelet.pagelet import pagelet_config
from pyams_skin.container import ContainerView
@@ -106,7 +108,7 @@
_header = _("Title")
-@adapter_config(context=(ISharedTool, IPyAMSLayer, IDashboardTable), provides=ITableElementName)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, IDashboardTable), provides=ITableElementName)
class SharedToolDashboardNameAdapter(ContextRequestViewAdapter):
"""Shared tool dashboard name adapter"""
@@ -133,8 +135,11 @@
def getValue(self, obj):
target = get_parent(obj, ISequentialIdTarget)
- sequence = get_utility(ISequentialIntIds, name=target.sequence_name)
- return sequence.get_base_oid(ISequentialIdInfo(obj).oid, target.sequence_prefix)
+ if target is not None:
+ sequence = get_utility(ISequentialIntIds, name=target.sequence_name)
+ return sequence.get_base_oid(ISequentialIdInfo(obj).oid, target.sequence_prefix)
+ else:
+ return '--'
@adapter_config(name='status', context=(Interface, IPyAMSLayer, ISharedToolDashboardTable), provides=IColumn)
@@ -145,19 +150,22 @@
weight = 20
def getValue(self, obj):
- workflow = IWorkflow(obj)
- state = IWorkflowState(obj)
- result = self.request.localizer.translate(workflow.get_state_label(state.state))
- if state.state_urgency:
- result += ' <i class="fa fa-fw fa-exclamation-triangle txt-color-red"></i>'
- elif state.state in workflow.published_states:
- pub_info = IWorkflowPublicationInfo(obj, None)
- if (pub_info is not None) and not pub_info.is_published():
- translate = self.request.localizer.translate
- result += ' <i class="fa fa-fw fa-hourglass-half font-xs opacity-75 hint align-base" ' \
- 'data-ams-hint-offset="5" title="{0}"></i>'.format(
- translate(_("Content publication start date is not passed yet")))
- return result
+ state = IWorkflowState(obj, None)
+ if state is not None:
+ workflow = IWorkflow(obj)
+ result = self.request.localizer.translate(workflow.get_state_label(state.state))
+ if state.state_urgency:
+ result += ' <i class="fa fa-fw fa-exclamation-triangle txt-color-red"></i>'
+ elif state.state in workflow.published_states:
+ pub_info = IWorkflowPublicationInfo(obj, None)
+ if (pub_info is not None) and not pub_info.is_published():
+ translate = self.request.localizer.translate
+ result += ' <i class="fa fa-fw fa-hourglass-half font-xs opacity-75 hint align-base" ' \
+ 'data-ams-hint-offset="5" title="{0}"></i>'.format(
+ translate(_("Content publication start date is not passed yet")))
+ return result
+ else:
+ return '--'
@adapter_config(name='status_date', context=(Interface, IPyAMSLayer, ISharedToolDashboardTable), provides=IColumn)
@@ -170,8 +178,11 @@
weight = 21
def getValue(self, obj):
- state = IWorkflowState(obj)
- return format_datetime(state.state_date, SH_DATETIME_FORMAT, request=self.request)
+ state = IWorkflowState(obj, None)
+ if state is not None:
+ return format_datetime(state.state_date, SH_DATETIME_FORMAT, request=self.request)
+ else:
+ return '--'
@adapter_config(name='version', context=(Interface, IPyAMSLayer, ISharedToolDashboardTable), provides=IColumn)
@@ -182,7 +193,11 @@
weight = 25
def getValue(self, obj):
- return str(IWorkflowState(obj).version_id)
+ state = IWorkflowState(obj, None)
+ if state is not None:
+ return str(state.version_id)
+ else:
+ return '--'
@adapter_config(name='status_principal', context=(Interface, IPyAMSLayer, ISharedToolDashboardTable), provides=IColumn)
@@ -195,9 +210,12 @@
weight = 30
def getValue(self, obj):
- state = IWorkflowState(obj)
- manager = get_utility(ISecurityManager)
- return manager.get_principal(state.state_principal).title
+ state = IWorkflowState(obj, None)
+ if state is not None:
+ manager = get_utility(ISecurityManager)
+ return manager.get_principal(state.state_principal).title
+ else:
+ return '--'
@adapter_config(name='owner', context=(Interface, IPyAMSLayer, ISharedToolDashboardTable), provides=IColumn)
@@ -210,8 +228,13 @@
weight = 35
def getValue(self, obj):
- manager = get_utility(ISecurityManager)
- return manager.get_principal(next(iter(obj.owner))).title
+ try:
+ owner = obj.owner
+ except AttributeError:
+ return '--'
+ else:
+ manager = get_utility(ISecurityManager)
+ return manager.get_principal(next(iter(owner))).title
@adapter_config(name='modified', context=(Interface, IPyAMSLayer, ISharedToolDashboardTable), provides=IColumn)
@@ -229,7 +252,7 @@
# Shared tool control panel
#
-@viewlet_config(name='dashboard.menu', context=ISharedTool, layer=IAdminLayer,
+@viewlet_config(name='dashboard.menu', context=IBaseSharedTool, layer=IAdminLayer,
manager=IContentManagementMenu, permission=VIEW_SYSTEM_PERMISSION, weight=1)
@viewletmanager_config(name='dashboard.menu', layer=IAdminLayer, provides=IDashboardMenu)
@implementer(IDashboardMenu)
@@ -241,7 +264,7 @@
url = '#dashboard.html'
-@pagelet_config(name='dashboard.html', context=ISharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='dashboard.html', context=IBaseSharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
@template_config(template='templates/dashboard.pt', layer=IAdminLayer)
class SharedToolDashboardView(InnerAdminView):
"""Shared tool dashboard view"""
@@ -262,7 +285,7 @@
[table.update() for table in self.tables]
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolDashboardView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolDashboardView), provides=IPageHeader)
class SharedToolDashboardHeaderAdapter(DefaultPageHeaderAdapter):
"""Shared tool properties header adapter"""
@@ -284,15 +307,16 @@
_plural_title = _("MANAGER - {0} contents waiting for your action")
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolDashboardManagerWaitingTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolDashboardManagerWaitingTable), provides=IValues)
class SharedToolDashboardManagerWaitingValues(ContextRequestViewAdapter):
"""Shared tool dashboard waiting values adapter"""
@property
def values(self):
+ intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
- params = Eq(catalog['content_type'], self.context.shared_content_type) & \
+ params = Eq(catalog['parents'], intids.register(self.context)) & \
Any(catalog['workflow_state'], workflow.waiting_states)
return filter(self.check_access,
unique(map(lambda x: sorted(IWorkflowVersions(x).get_versions(IWorkflowState(x).state),
@@ -326,15 +350,16 @@
dt_sort_order = 'asc'
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolDashboardOwnerWaitingTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolDashboardOwnerWaitingTable), provides=IValues)
class SharedToolDashboardOwnerWaitingValues(ContextRequestViewAdapter):
"""Shared tool dashboard waiting owned contents values adapter"""
@property
def values(self):
+ intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
- params = Eq(catalog['content_type'], self.context.shared_content_type) & \
+ params = Eq(catalog['parents'], intids.register(self.context)) & \
Any(catalog['workflow_state'], workflow.waiting_states) & \
Eq(catalog['workflow_principal'], self.request.principal.id)
return unique(map(lambda x: sorted(IWorkflowVersions(x).get_versions(IWorkflowState(x).state),
@@ -361,16 +386,18 @@
return _("CONTRIBUTOR - Last {0} modified contents")
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolDashboardOwnerModifiedTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolDashboardOwnerModifiedTable), provides=IValues)
class SharedToolDashboardOwnerModifiedValues(ContextRequestViewAdapter):
"""Shared tool dashboard waiting owned contents values adapter"""
@property
def values(self):
+ intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
- params = And(Eq(catalog['content_type'], self.context.shared_content_type),
- Or(Eq(catalog['role:owner'], self.request.principal.id),
- Eq(catalog['role:contributor'], self.request.principal.id)))
+ params = And(Eq(catalog['parents'], intids.register(self.context)),
+ Any(catalog['content_type'], CONTENT_TYPES.keys()),
+ Or(Eq(catalog['role:owner'], self.request.principal.id),
+ Eq(catalog['role:contributor'], self.request.principal.id)))
return unique(map(lambda x: sorted(IWorkflowVersions(x).get_versions(IWorkflowState(x).state),
key=lambda y: IZopeDublinCore(y).modified, reverse=True)[0],
CatalogResultSet(CatalogQuery(catalog).query(params,
@@ -383,7 +410,7 @@
# All my contents menu
#
-@viewlet_config(name='my-contents.menu', context=ISharedTool, layer=IAdminLayer,
+@viewlet_config(name='my-contents.menu', context=IBaseSharedTool, layer=IAdminLayer,
manager=IContentManagementMenu, permission=VIEW_SYSTEM_PERMISSION, weight=5)
@viewletmanager_config(name='my-contents.menu', layer=IAdminLayer, provides=IMyDashboardMenu)
@implementer(IMyDashboardMenu)
@@ -400,7 +427,7 @@
# Dashboard of favorites contents
#
-@viewlet_config(name='my-favorites.menu', context=ISharedTool, layer=IAdminLayer,
+@viewlet_config(name='my-favorites.menu', context=IBaseSharedTool, layer=IAdminLayer,
manager=IMyDashboardMenu, permission=VIEW_SYSTEM_PERMISSION, weight=3)
class SharedToolFavoritesMenu(MenuItem):
"""Shared tool favorites dashboard menu"""
@@ -454,15 +481,17 @@
return ''
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolFavoritesTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolFavoritesTable), provides=IValues)
class SharedToolFavoritesValues(ContextRequestViewAdapter):
"""Shared tool favorites values adapter"""
@property
def values(self):
+ intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
profile = IAdminProfile(self.request.principal)
- params = And(Eq(catalog['content_type'], self.context.shared_content_type),
+ params = And(Eq(catalog['parents'], intids.register(self.context)),
+ Any(catalog['content_type'], CONTENT_TYPES.keys()),
Any(catalog['oid'], profile.favorites or ()))
return unique(map(lambda x: IWorkflowVersions(x).get_last_versions()[0],
CatalogResultSet(CatalogQuery(catalog).query(params,
@@ -470,14 +499,14 @@
reverse=True))))
-@pagelet_config(name='my-favorites.html', context=ISharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='my-favorites.html', context=IBaseSharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
class SharedToolFavoritesView(InnerAdminView, ContainerView):
"""Shared tool favorites view"""
table_class = SharedToolFavoritesTable
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolFavoritesView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolFavoritesView), provides=IPageHeader)
class SharedToolFavoritesHeaderAdapter(DefaultPageHeaderAdapter):
"""Shared tool favorites header adapter"""
@@ -496,7 +525,7 @@
# Dashboard of owned and modified contents which can be updated
#
-@viewlet_config(name='my-preparations.menu', context=ISharedTool, layer=IAdminLayer,
+@viewlet_config(name='my-preparations.menu', context=IBaseSharedTool, layer=IAdminLayer,
manager=IMyDashboardMenu, permission=VIEW_SYSTEM_PERMISSION, weight=5)
class SharedToolPreparationsMenu(MenuItem):
"""Shared tool preparations dashboard menu"""
@@ -514,15 +543,16 @@
_plural_title = _("CONTRIBUTOR - {0} prepared contents")
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolPreparationsTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolPreparationsTable), provides=IValues)
class SharedToolPreparationsValues(ContextRequestViewAdapter):
"""Shared tool preparations values adapter"""
@property
def values(self):
+ intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
- params = And(Eq(catalog['content_type'], self.context.shared_content_type),
+ params = And(Eq(catalog['parents'], intids.register(self.context)),
Or(Eq(catalog['role:owner'], self.request.principal.id),
Eq(catalog['role:contributor'], self.request.principal.id)),
Eq(catalog['workflow_state'], workflow.initial_state))
@@ -531,14 +561,14 @@
reverse=True)))
-@pagelet_config(name='my-preparations.html', context=ISharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='my-preparations.html', context=IBaseSharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
class SharedToolPreparationsView(InnerAdminView, ContainerView):
"""Shared tool preparations view"""
table_class = SharedToolPreparationsTable
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolPreparationsView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolPreparationsView), provides=IPageHeader)
class SharedToolPreparationsHeaderAdapter(DefaultPageHeaderAdapter):
"""Shared tool preparations header adapter"""
@@ -557,7 +587,7 @@
# Dashboard of owned and modified contents which are waiting for manager action
#
-@viewlet_config(name='my-submissions.menu', context=ISharedTool, layer=IAdminLayer,
+@viewlet_config(name='my-submissions.menu', context=IBaseSharedTool, layer=IAdminLayer,
manager=IMyDashboardMenu, permission=VIEW_SYSTEM_PERMISSION, weight=7)
class SharedToolSubmissionsMenu(MenuItem):
"""Shared tool submissions dashboard menu"""
@@ -575,15 +605,16 @@
_plural_title = _("CONTRIBUTOR - {0} submitted contents")
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolSubmissionsTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolSubmissionsTable), provides=IValues)
class SharedToolSubmissionsValues(ContextRequestViewAdapter):
"""Shared tool submissions values adapter"""
@property
def values(self):
+ intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
- params = And(Eq(catalog['content_type'], self.context.shared_content_type),
+ params = And(Eq(catalog['parents'], intids.register(self.context)),
Or(Eq(catalog['role:owner'], self.request.principal.id),
Eq(catalog['role:contributor'], self.request.principal.id)),
Any(catalog['workflow_state'], workflow.waiting_states))
@@ -592,14 +623,14 @@
reverse=True)))
-@pagelet_config(name='my-submissions.html', context=ISharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='my-submissions.html', context=IBaseSharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
class SharedToolSubmissionsView(InnerAdminView, ContainerView):
"""Shared tool submissions view"""
table_class = SharedToolSubmissionsTable
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolSubmissionsView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolSubmissionsView), provides=IPageHeader)
class SharedToolSubmissionsHeaderAdapter(DefaultPageHeaderAdapter):
"""Shared tool submissions header adapter"""
@@ -618,7 +649,7 @@
# Dashboard of owned and modified contents which are published
#
-@viewlet_config(name='my-publications.menu', context=ISharedTool, layer=IAdminLayer,
+@viewlet_config(name='my-publications.menu', context=IBaseSharedTool, layer=IAdminLayer,
manager=IMyDashboardMenu, permission=VIEW_SYSTEM_PERMISSION, weight=10)
class SharedToolPublicationsMenu(MenuItem):
"""Shared tool publications dashboard menu"""
@@ -636,15 +667,16 @@
_plural_title = _("CONTRIBUTOR - {0} published contents")
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolPublicationsTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolPublicationsTable), provides=IValues)
class SharedToolPublicationsValues(ContextRequestViewAdapter):
"""Shared tool publications values adapter"""
@property
def values(self):
+ intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
- params = And(Eq(catalog['content_type'], self.context.shared_content_type),
+ params = And(Eq(catalog['parents'], intids.register(self.context)),
Or(Eq(catalog['role:owner'], self.request.principal.id),
Eq(catalog['role:contributor'], self.request.principal.id)),
Any(catalog['workflow_state'], workflow.published_states))
@@ -653,14 +685,14 @@
reverse=True)))
-@pagelet_config(name='my-publications.html', context=ISharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
+@pagelet_config(name='my-publications.html', context=IBaseSharedTool, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION)
class SharedToolPublicationsView(InnerAdminView, ContainerView):
"""Shared tool publications view"""
table_class = SharedToolPublicationsTable
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolPublicationsView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolPublicationsView), provides=IPageHeader)
class SharedToolPublicationsHeaderAdapter(DefaultPageHeaderAdapter):
"""Shared tool publications header adapter"""
@@ -679,7 +711,7 @@
# Dashboard of owned and modified contents which are retired
#
-@viewlet_config(name='my-retired-contents.menu', context=ISharedTool, layer=IAdminLayer,
+@viewlet_config(name='my-retired-contents.menu', context=IBaseSharedTool, layer=IAdminLayer,
manager=IMyDashboardMenu, permission=VIEW_SYSTEM_PERMISSION, weight=15)
class SharedToolRetiredMenu(MenuItem):
"""Shared tool retired contents dashboard menu"""
@@ -697,15 +729,16 @@
_plural_title = _("CONTRIBUTOR - {0} retired contents")
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolRetiredContentsTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolRetiredContentsTable), provides=IValues)
class SharedToolRetiredContentsValues(ContextRequestViewAdapter):
"""Shared tool retired contents values adapter"""
@property
def values(self):
+ intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
- params = And(Eq(catalog['content_type'], self.context.shared_content_type),
+ params = And(Eq(catalog['parents'], intids.register(self.context)),
Or(Eq(catalog['role:owner'], self.request.principal.id),
Eq(catalog['role:contributor'], self.request.principal.id)),
Any(catalog['workflow_state'], workflow.retired_states))
@@ -714,7 +747,7 @@
reverse=True)))
-@pagelet_config(name='my-retired-contents.html', context=ISharedTool, layer=IPyAMSLayer,
+@pagelet_config(name='my-retired-contents.html', context=IBaseSharedTool, layer=IPyAMSLayer,
permission=VIEW_SYSTEM_PERMISSION)
class SharedToolRetiredContentsView(InnerAdminView, ContainerView):
"""Shared tool retired contents view"""
@@ -722,7 +755,7 @@
table_class = SharedToolRetiredContentsTable
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolRetiredContentsView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolRetiredContentsView), provides=IPageHeader)
class SharedToolRetiredContentsHeaderAdapter(DefaultPageHeaderAdapter):
"""Shared tool retired contents header adapter"""
@@ -741,7 +774,7 @@
# Dashboard of owned and modified contents which are archived
#
-@viewlet_config(name='my-archived-contents.menu', context=ISharedTool, layer=IAdminLayer,
+@viewlet_config(name='my-archived-contents.menu', context=IBaseSharedTool, layer=IAdminLayer,
manager=IMyDashboardMenu, permission=VIEW_SYSTEM_PERMISSION, weight=20)
class SharedToolArchivedMenu(MenuItem):
"""Shared tool archived contents dashboard menu"""
@@ -759,16 +792,17 @@
_plural_title = _("CONTRIBUTOR - {0} archived contents")
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolArchivedContentsTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolArchivedContentsTable), provides=IValues)
class SharedToolArchivedContentsValues(ContextRequestViewAdapter):
"""Shared tool archived contents values adapter"""
@property
def values(self):
+ intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
principal_id = self.request.principal.id
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
- params = And(Eq(catalog['content_type'], self.context.shared_content_type),
+ params = And(Eq(catalog['parents'], intids.register(self.context)),
Or(Eq(catalog['role:owner'], principal_id),
Eq(catalog['role:contributor'], principal_id)),
Any(catalog['workflow_state'], workflow.archived_states))
@@ -782,7 +816,7 @@
reverse=True))))
-@pagelet_config(name='my-archived-contents.html', context=ISharedTool, layer=IPyAMSLayer,
+@pagelet_config(name='my-archived-contents.html', context=IBaseSharedTool, layer=IPyAMSLayer,
permission=VIEW_SYSTEM_PERMISSION)
class SharedToolArchivedContentsView(InnerAdminView, ContainerView):
"""Shared tool archived contents view"""
@@ -790,7 +824,7 @@
table_class = SharedToolArchivedContentsTable
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolArchivedContentsView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolArchivedContentsView), provides=IPageHeader)
class SharedToolArchivedContentsHeaderAdapter(DefaultPageHeaderAdapter):
"""Shared tool archived contents header adapter"""
@@ -808,7 +842,7 @@
# All interventions
#
-@viewlet_config(name='all-interventions.menu', context=ISharedTool, layer=IAdminLayer,
+@viewlet_config(name='all-interventions.menu', context=IBaseSharedTool, layer=IAdminLayer,
manager=IContentManagementMenu, permission=VIEW_SYSTEM_PERMISSION, weight=10)
@viewletmanager_config(name='all-interventions.menu', layer=IAdminLayer, provides=IAllContentsMenu)
@implementer(IAllContentsMenu)
@@ -825,7 +859,7 @@
# Dashboard of all published contents
#
-@viewlet_config(name='all-publications.menu', context=ISharedTool, layer=IAdminLayer,
+@viewlet_config(name='all-publications.menu', context=IBaseSharedTool, layer=IAdminLayer,
manager=IAllContentsMenu, permission=VIEW_SYSTEM_PERMISSION, weight=10)
class SharedToolAllPublicationsMenu(MenuItem):
"""Shared tool published contents dashboard menu"""
@@ -849,15 +883,16 @@
return _("CONTRIBUTORS - Last published contents (in the limit of 50)")
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolAllPublicationsTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAllPublicationsTable), provides=IValues)
class SharedToolAllPublicationsValues(ContextRequestViewAdapter):
"""Shared tool published contents values adapter"""
@property
def values(self):
+ intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
workflow = get_utility(IWorkflow, name=self.context.shared_content_workflow)
- params = And(Eq(catalog['content_type'], self.context.shared_content_type),
+ params = And(Eq(catalog['parents'], intids.register(self.context)),
Any(catalog['workflow_state'], workflow.published_states))
return unique(CatalogResultSet(CatalogQuery(catalog).query(params,
limit=50,
@@ -865,7 +900,7 @@
reverse=True)))
-@pagelet_config(name='all-publications.html', context=ISharedTool, layer=IPyAMSLayer,
+@pagelet_config(name='all-publications.html', context=IBaseSharedTool, layer=IPyAMSLayer,
permission=VIEW_SYSTEM_PERMISSION)
class SharedToolAllPublicationsView(InnerAdminView, ContainerView):
"""Shared tool published contents view"""
@@ -873,7 +908,7 @@
table_class = SharedToolAllPublicationsTable
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolAllPublicationsView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAllPublicationsView), provides=IPageHeader)
class SharedToolAllPublicationsHeaderAdapter(DefaultPageHeaderAdapter):
"""Shared tool published contents header adapter"""
@@ -892,7 +927,7 @@
# Dashboard of all updated contents
#
-@viewlet_config(name='all-updates.menu', context=ISharedTool, layer=IAdminLayer,
+@viewlet_config(name='all-updates.menu', context=IBaseSharedTool, layer=IAdminLayer,
manager=IAllContentsMenu, permission=VIEW_SYSTEM_PERMISSION, weight=20)
class SharedToolAllUpdatesMenu(MenuItem):
"""Shared tool updated contents dashboard menu"""
@@ -916,21 +951,23 @@
return _("CONTRIBUTORS - Last updated contents (in the limit of 50)")
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolAllUpdatesTable), provides=IValues)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAllUpdatesTable), provides=IValues)
class SharedToolAllUpdatesValues(ContextRequestViewAdapter):
"""Shared tool updated contents values adapter"""
@property
def values(self):
+ intids = get_utility(IIntIds)
catalog = get_utility(ICatalog)
- params = Eq(catalog['content_type'], self.context.shared_content_type)
+ params = Eq(catalog['parents'], intids.register(self.context)) & \
+ Any(catalog['content_type'], CONTENT_TYPES.keys())
return unique(CatalogResultSet(CatalogQuery(catalog).query(params,
limit=50,
sort_index='modified_date',
reverse=True)))
-@pagelet_config(name='all-updates.html', context=ISharedTool, layer=IPyAMSLayer,
+@pagelet_config(name='all-updates.html', context=IBaseSharedTool, layer=IPyAMSLayer,
permission=VIEW_SYSTEM_PERMISSION)
class SharedToolAllUpdatesView(InnerAdminView, ContainerView):
"""Shared tool updated contents view"""
@@ -938,7 +975,7 @@
table_class = SharedToolAllUpdatesTable
-@adapter_config(context=(ISharedTool, IPyAMSLayer, SharedToolAllUpdatesView), provides=IPageHeader)
+@adapter_config(context=(IBaseSharedTool, IPyAMSLayer, SharedToolAllUpdatesView), provides=IPageHeader)
class SharedToolAllUpdatesHeaderAdapter(DefaultPageHeaderAdapter):
"""Shared tool updated contents header adapter"""
@@ -956,7 +993,7 @@
# Advanced search access menu
#
-@viewlet_config(name='advanced-search.menu', context=ISharedTool, layer=IAdminLayer,
+@viewlet_config(name='advanced-search.menu', context=IBaseSharedTool, layer=IAdminLayer,
manager=IAllContentsMenu, permission=VIEW_SYSTEM_PERMISSION, weight=90)
class SharedToolAdvancedSearchMenu(MenuItem):
"""Shared tool advanced search menu"""