src/pyams_workflow/zmi/versions.py
changeset 11 f25326715002
parent 7 3991ed2e1855
child 15 182f33bba91d
equal deleted inserted replaced
10:41ac20351fe2 11:f25326715002
    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'
    55 
    54 
    56 @pagelet_config(name='version-history.html', context=IWorkflowVersion, layer=IPyAMSLayer,
    55 @pagelet_config(name='version-history.html', context=IWorkflowVersion, layer=IPyAMSLayer,
    57                 permission='manage')
    56                 permission='manage')
    58 class WorkflowVersionHistoryDisplayForm(AdminDialogDisplayForm):
    57 class WorkflowVersionHistoryDisplayForm(AdminDialogDisplayForm):
    59     """Workflow version history view"""
    58     """Workflow version history view"""
    60 
       
    61     @property
       
    62     def title(self):
       
    63         return self.context.name
       
    64 
    59 
    65     dialog_class = 'modal-large'
    60     dialog_class = 'modal-large'
    66     fields = field.Fields(Interface)
    61     fields = field.Fields(Interface)
    67 
    62 
    68 
    63 
   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"""