[Checkins] SVN: Products.CMFDefault/branches/2.2/Products/CMFDefault/ - WorkflowTool/DiscussionItem: Create a set of GenericSetup
Jens Vagelpohl
jens at dataflake.org
Wed Dec 9 08:48:24 EST 2009
Log message for revision 106329:
- WorkflowTool/DiscussionItem: Create a set of GenericSetup
upgrade steps to instantiate the new single-state workflow
for Discussion Items and associate it with the content type.
Changed:
U Products.CMFDefault/branches/2.2/Products/CMFDefault/CHANGES.txt
U Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/configure.zcml
U Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to22.py
-=-
Modified: Products.CMFDefault/branches/2.2/Products/CMFDefault/CHANGES.txt
===================================================================
--- Products.CMFDefault/branches/2.2/Products/CMFDefault/CHANGES.txt 2009-12-09 12:56:18 UTC (rev 106328)
+++ Products.CMFDefault/branches/2.2/Products/CMFDefault/CHANGES.txt 2009-12-09 13:48:24 UTC (rev 106329)
@@ -4,6 +4,10 @@
2.2.0 (unreleased)
------------------
+- WorkflowTool/DiscussionItem: Create a set of GenericSetup
+ upgrade steps to instantiate the new single-state workflow
+ for Discussion Items and associate it with the content type.
+
- MetadataTool: Replaced write-on-read upgrade for the Dublin Core
metadata definitions with a set of GenericSetup upgrade steps.
Modified: Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/configure.zcml
===================================================================
--- Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/configure.zcml 2009-12-09 12:56:18 UTC (rev 106328)
+++ Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/configure.zcml 2009-12-09 13:48:24 UTC (rev 106329)
@@ -104,6 +104,18 @@
/>
<genericsetup:upgradeStep
+ title="Add Single-state workflow"
+ handler=".to22.add_singlestate_workflow"
+ checker=".to22.check_singlestate_workflow"
+ />
+
+ <genericsetup:upgradeStep
+ title="Upgrade Discussion Item workflow"
+ handler=".to22.upgrade_discussionitem_workflow"
+ checker=".to22.check_discussionitem_workflow"
+ />
+
+ <genericsetup:upgradeStep
title="Upgrade workflow definitions"
handler=".to22.upgrade_workflow_definitions"
checker=".to22.check_workflow_definitions"
Modified: Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to22.py
===================================================================
--- Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to22.py 2009-12-09 12:56:18 UTC (rev 106328)
+++ Products.CMFDefault/branches/2.2/Products/CMFDefault/upgrade/to22.py 2009-12-09 13:48:24 UTC (rev 106329)
@@ -17,12 +17,15 @@
import logging
from urllib import quote
+from AccessControl.Permissions import access_contents_information
+from AccessControl.Permissions import view
from Acquisition import aq_base
from Acquisition import aq_inner
from Acquisition import aq_parent
from zope.component.interfaces import ComponentLookupError
from Products.CMFCore.interfaces import IWorkflowDefinition
+from Products.CMFCore.permissions import ModifyPortalContent
from Products.CMFCore.utils import getToolByName
_KNOWN_IMPORT_STEPS = (
@@ -316,3 +319,58 @@
metadata_tool.DCMI = dcmi
logger.info('Dublin Core metadata definition updated.')
+
+_SINGLESTATE_WF_ID = 'singlestate_workflow'
+
+def check_singlestate_workflow(tool):
+ """2.1.x to 2.2.0 upgrade step checker
+ """
+ wf_tool = getToolByName(tool, 'portal_workflow')
+ return wf_tool.getWorkflowById(_SINGLESTATE_WF_ID) is None
+
+def add_singlestate_workflow(tool):
+ """2.1.x to 2.2.0 upgrade step handler
+ """
+ wf_tool = getToolByName(tool, 'portal_workflow')
+ if wf_tool.getWorkflowById(_SINGLESTATE_WF_ID) is None:
+ from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition
+ wf = DCWorkflowDefinition(_SINGLESTATE_WF_ID)
+ wf.title = 'Single-state workflow'
+ wf.initial_state = 'published'
+ wf.state_var = 'review_state'
+ wf.manager_bypass = False
+ wf.permissions = ( access_contents_information
+ , ModifyPortalContent
+ , view
+ )
+ wf.states.addState('published')
+ public = wf.states.published
+ public.title = 'Public'
+ public.setPermission( access_contents_information
+ , True
+ , ('Anonymous', 'Manager')
+ )
+ public.setPermission(ModifyPortalContent, False, ('Manager', 'Owner'))
+ public.setPermission(view, True, ('Anonymous', 'Manager'))
+ wf_tool._setObject(_SINGLESTATE_WF_ID, wf)
+
+def check_discussionitem_workflow(tool):
+ """2.1.x to 2.2.0 upgrade step checker
+ """
+ wf_tool = getToolByName(tool, 'portal_workflow')
+ discussion_overrides = [x for x in wf_tool.listChainOverrides()
+ if x[0] == 'Discussion Item']
+
+ # Only apply if Discussion Item has an empty workflow chain
+ if discussion_overrides and not discussion_overrides[0][1]:
+ return True
+
+ return False
+
+def upgrade_discussionitem_workflow(tool):
+ """2.1.x to 2.2.0 upgrade step handler
+ """
+ wf_tool = getToolByName(tool, 'portal_workflow')
+ wf_tool.setChainForPortalTypes(('Discussion Item',), _SINGLESTATE_WF_ID)
+
+
More information about the checkins
mailing list