diff -r 34e6d07ea2e9 -r 29b1aaf9e080 src/pyams_content/shared/common/zmi/summary.py --- a/src/pyams_content/shared/common/zmi/summary.py Tue Nov 06 14:40:22 2018 +0100 +++ b/src/pyams_content/shared/common/zmi/summary.py Wed Nov 07 17:29:16 2018 +0100 @@ -12,20 +12,14 @@ __docformat__ = 'restructuredtext' - -# import standard library - from z3c.form import field from z3c.form.interfaces import DISPLAY_MODE, IDataConverter -from zope.interface import implementer, Interface +from zope.interface import Interface, implementer -from pyams_content import _ -# import interfaces -from pyams_content.shared.common.interfaces import IWfSharedContent, IWfSharedContentRoles, IBaseSharedTool +from pyams_content.shared.common.interfaces import IBaseSharedTool, IWfSharedContent, IWfSharedContentRoles from pyams_content.shared.common.interfaces.types import IWfTypedSharedContent -# import packages from pyams_content.shared.common.zmi.header import SharedContentHeaderContentProvider -from pyams_form.interfaces.form import IWidgetForm, IInnerTabForm, IInnerSubForm +from pyams_form.interfaces.form import IInnerSubForm, IInnerTabForm, IWidgetForm from pyams_pagelet.pagelet import pagelet_config from pyams_security.utility import get_principal from pyams_sequence.interfaces import ISequentialIdInfo @@ -38,9 +32,11 @@ from pyams_utils.traversing import get_parent from pyams_utils.url import absolute_url from pyams_viewlet.viewlet import contentprovider_config -from pyams_workflow.interfaces import IWorkflowState, IWorkflow, IWorkflowPublicationInfo, IWorkflowStateHistoryItem, \ +from pyams_workflow.interfaces import IWorkflow, IWorkflowPublicationInfo, IWorkflowState, IWorkflowStateHistoryItem, \ IWorkflowVersions -from pyams_zmi.form import AdminDisplayForm, InnerAdminDisplayForm, InnerAdminAddForm +from pyams_zmi.form import AdminDisplayForm, InnerAdminAddForm, InnerAdminDisplayForm + +from pyams_content import _ @pagelet_config(name='summary.html', context=IWfSharedContent, layer=IPyAMSLayer, permission=VIEW_SYSTEM_PERMISSION) @@ -97,13 +93,13 @@ def __new__(cls, context, request, form): workflow = IWorkflow(context) - state = IWorkflowState(context) - if state.state not in workflow.waiting_states: + state = IWorkflowState(context, None) + if (state is None) or (state.state not in workflow.waiting_states): return None return InnerAdminDisplayForm.__new__(cls) fields = field.Fields(IWorkflowState).select('state', 'state_urgency') + \ - field.Fields(IWorkflowStateHistoryItem).select('comment') + field.Fields(IWorkflowStateHistoryItem).select('comment') def updateWidgets(self, prefix=None): super(SharedContentWorkflowWaitingState, self).updateWidgets(prefix) @@ -135,8 +131,8 @@ weight = 20 def __new__(cls, context, request, form): - info = IWorkflowPublicationInfo(context) - if not info.publication_effective_date: + info = IWorkflowPublicationInfo(context, None) + if (info is None) or not info.publication_effective_date: return None return InnerAdminDisplayForm.__new__(cls) @@ -153,11 +149,17 @@ legend = _("Current version") weight = 30 + def __new__(cls, context, request, form): + state = IWorkflowState(context, None) + if state is None: + return None + return InnerAdminDisplayForm.__new__(cls) + fields = field.Fields(IWorkflowState).select('version_id', 'state') + \ - field.Fields(IWfSharedContent).select('creation_label') + \ - field.Fields(IWfSharedContentRoles).select('owner') + \ - field.Fields(IWfSharedContent).select('last_update_label') + \ - field.Fields(IWfSharedContent).select('modifiers') + field.Fields(IWfSharedContent).select('creation_label') + \ + field.Fields(IWfSharedContentRoles).select('owner') + \ + field.Fields(IWfSharedContent).select('last_update_label') + \ + field.Fields(IWfSharedContent).select('modifiers') def updateWidgets(self, prefix=None): super(SharedContentWorkflowVersionSummary, self).updateWidgets(prefix) @@ -182,20 +184,31 @@ legend = _("Content history") + def __new__(cls, context, request, form): + info = IWorkflowPublicationInfo(context, None) + if info is None: + return None + return InnerAdminDisplayForm.__new__(cls) + fields = field.Fields(IWorkflowPublicationInfo).select('first_publication_date') + \ - field.Fields(IWfSharedContent).select('first_owner') + field.Fields(IWfSharedContent).select('first_owner') weight = 40 def updateWidgets(self, prefix=None): super(SharedContentWorkflowHistorySummary, self).updateWidgets(prefix) - workflow = IWorkflow(self.context) - versions = IWorkflowVersions(self.context) - value = '' - for version in versions.get_versions(): - state = IWorkflowState(version) - pub_date = tztime(state.get_first_state_date(workflow.published_states)) - if pub_date is not None: - value = format_datetime(pub_date) - break - self.widgets['first_publication_date'].value = value + if 'first_publication_date' in self.widgets: + versions = IWorkflowVersions(self.context, None) + if versions is not None: + workflow = IWorkflow(self.context) + value = '' + for version in versions.get_versions(): + state = IWorkflowState(version) + pub_date = tztime(state.get_first_state_date(workflow.published_states)) + if pub_date is not None: + value = format_datetime(pub_date) + break + else: + info = IWorkflowPublicationInfo(self.context, None) + value = format_datetime(info.first_publication_date) + self.widgets['first_publication_date'].value = value