17 |
17 |
18 # import interfaces |
18 # import interfaces |
19 from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager |
19 from pyams_form.interfaces.form import IWidgetsSuffixViewletsManager |
20 from pyams_security.interfaces import ISecurityManager |
20 from pyams_security.interfaces import ISecurityManager |
21 from pyams_skin.layer import IPyAMSLayer |
21 from pyams_skin.layer import IPyAMSLayer |
22 from pyams_workflow.interfaces import IWorkflowVersion, IWorkflowState, IWorkflowManagedContent, IWorkflow |
22 from pyams_workflow.interfaces import IWorkflowVersion, IWorkflowState |
23 from pyams_zmi.interfaces.menu import IPropertiesMenu |
23 from pyams_zmi.interfaces.menu import IPropertiesMenu |
24 from z3c.table.interfaces import IValues, IColumn |
24 from z3c.table.interfaces import IValues, IColumn |
25 |
25 |
26 # import packages |
26 # import packages |
27 from pyams_pagelet.pagelet import pagelet_config |
27 from pyams_pagelet.pagelet import pagelet_config |
28 from pyams_skin.table import BaseTable, I18nColumn |
28 from pyams_skin.table import BaseTable, I18nColumn |
29 from pyams_skin.viewlet.menu import MenuItem |
29 from pyams_skin.viewlet.menu import MenuItem, MenuDivider |
30 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter |
30 from pyams_utils.adapter import adapter_config, ContextRequestViewAdapter |
31 from pyams_utils.date import format_datetime |
31 from pyams_utils.date import format_datetime |
32 from pyams_utils.registry import query_utility |
32 from pyams_utils.registry import query_utility |
33 from pyams_utils.text import text_to_html |
33 from pyams_utils.text import text_to_html |
34 from pyams_utils.traversing import get_parent |
|
35 from pyams_viewlet.viewlet import viewlet_config, Viewlet |
34 from pyams_viewlet.viewlet import viewlet_config, Viewlet |
36 from pyams_zmi.form import AdminDialogDisplayForm |
35 from pyams_zmi.form import AdminDialogDisplayForm |
37 from pyams_zmi.layer import IAdminLayer |
36 from pyams_zmi.layer import IAdminLayer |
38 from z3c.form import field |
37 from z3c.form import field |
39 from z3c.table.column import GetAttrColumn |
38 from z3c.table.column import GetAttrColumn |
41 |
40 |
42 from pyams_workflow import _ |
41 from pyams_workflow import _ |
43 |
42 |
44 |
43 |
45 @viewlet_config(name='workflow-history.menu', context=IWorkflowVersion, layer=IAdminLayer, |
44 @viewlet_config(name='workflow-history.menu', context=IWorkflowVersion, layer=IAdminLayer, |
46 manager=IPropertiesMenu, permission='manage', weight=1) |
45 manager=IPropertiesMenu, permission='manage', weight=999) |
47 class WorkflowVersionHistoryMenuItem(MenuItem): |
46 class WorkflowVersionHistoryMenuItem(MenuItem): |
48 """Workflow history menu item""" |
47 """Workflow history menu item""" |
49 |
48 |
50 label = _("Version history...") |
49 label = _("Version history...") |
51 icon_class = 'fa fa-fw fa-history' |
50 icon_class = 'fa fa-fw fa-history' |
123 return manager.get_principal(item.principal).title |
118 return manager.get_principal(item.principal).title |
124 else: |
119 else: |
125 return item.principal |
120 return item.principal |
126 |
121 |
127 |
122 |
128 @adapter_config(name='transition', context=(Interface, IAdminLayer, WorkflowVersionHistoryTable), provides=IColumn) |
|
129 class WorkflowVersionHistoryTransitionColumn(I18nColumn, GetAttrColumn): |
|
130 """Workflow version history source column""" |
|
131 |
|
132 _header = _("Transition") |
|
133 attrName = 'transition' |
|
134 weight = 5 |
|
135 |
|
136 |
|
137 @adapter_config(name='source', context=(Interface, IAdminLayer, WorkflowVersionHistoryTable), provides=IColumn) |
123 @adapter_config(name='source', context=(Interface, IAdminLayer, WorkflowVersionHistoryTable), provides=IColumn) |
138 class WorkflowVersionHistorySourceColumn(I18nColumn, GetAttrColumn): |
124 class WorkflowVersionHistorySourceColumn(I18nColumn, GetAttrColumn): |
139 """Workflow version history source column""" |
125 """Workflow version history source column""" |
140 |
126 |
141 _header = _("Source") |
127 _header = _("Source") |
142 weight = 10 |
128 weight = 10 |
143 |
129 |
144 def renderCell(self, item): |
130 def renderCell(self, item): |
145 content = get_parent(self.context, IWorkflowManagedContent) |
|
146 workflow = query_utility(IWorkflow, name=content.workflow_name) |
|
147 translate = self.request.localizer.translate |
131 translate = self.request.localizer.translate |
148 if item.source_version: |
132 if item.source_version: |
149 return translate(_("Version {version} ({status})")).format( |
133 return translate(_("Version {version} ({status})")).format( |
150 version=item.source_version, |
134 version=item.source_version, |
151 status=translate(workflow.states.getTerm(item.source_state).title)) |
135 status=item.source_state) |
152 else: |
136 else: |
153 return translate(_("Version {version} ({status})")).format( |
137 return translate(_("Version {version} ({status})")).format( |
154 version=IWorkflowState(self.context).version_id, |
138 version=IWorkflowState(self.context).version_id, |
155 status=translate(workflow.states.getTerm(item.source_state).title) if item.source_state else '--') |
139 status=item.source_state if item.source_state else '--') |
|
140 |
|
141 |
|
142 @adapter_config(name='transition', context=(Interface, IAdminLayer, WorkflowVersionHistoryTable), provides=IColumn) |
|
143 class WorkflowVersionHistoryTransitionColumn(I18nColumn, GetAttrColumn): |
|
144 """Workflow version history source column""" |
|
145 |
|
146 _header = _("Transition") |
|
147 attrName = 'transition' |
|
148 weight = 11 |
156 |
149 |
157 |
150 |
158 @adapter_config(name='target', context=(Interface, IAdminLayer, WorkflowVersionHistoryTable), provides=IColumn) |
151 @adapter_config(name='target', context=(Interface, IAdminLayer, WorkflowVersionHistoryTable), provides=IColumn) |
159 class WorkflowVersionHistoryTargetColumn(I18nColumn, GetAttrColumn): |
152 class WorkflowVersionHistoryTargetColumn(I18nColumn, GetAttrColumn): |
160 """Workflow version history source column""" |
153 """Workflow version history source column""" |
161 |
154 |
162 _header = _("Target state") |
155 _header = _("Target state") |
163 weight = 11 |
156 attrName = 'target_state' |
164 |
157 weight = 12 |
165 def renderCell(self, item): |
|
166 content = get_parent(self.context, IWorkflowManagedContent) |
|
167 workflow = query_utility(IWorkflow, name=content.workflow_name) |
|
168 translate = self.request.localizer.translate |
|
169 return translate(workflow.states.getTerm(item.target_state).title) |
|
170 |
158 |
171 |
159 |
172 @adapter_config(name='comment', context=(Interface, IAdminLayer, WorkflowVersionHistoryTable), provides=IColumn) |
160 @adapter_config(name='comment', context=(Interface, IAdminLayer, WorkflowVersionHistoryTable), provides=IColumn) |
173 class WorkflowVersionHistoryCommentColumn(I18nColumn, GetAttrColumn): |
161 class WorkflowVersionHistoryCommentColumn(I18nColumn, GetAttrColumn): |
174 """Workflow version history comment column""" |
162 """Workflow version history comment column""" |