--- 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