Commit 4f787f3c authored by 's avatar

- converted three more tools

parent b584fbbe
...@@ -4,6 +4,8 @@ Products.DCWorkflow Changelog ...@@ -4,6 +4,8 @@ Products.DCWorkflow Changelog
2.3.0-alpha (unreleased) 2.3.0-alpha (unreleased)
------------------------ ------------------------
- Made sure converted tools are used as utilities.
- Don't crash worklist's ``manage_main`` if variables are Expression objects. - Don't crash worklist's ``manage_main`` if variables are Expression objects.
(https://bugs.launchpad.net/zope-cmf/+bug/731394) (https://bugs.launchpad.net/zope-cmf/+bug/731394)
......
...@@ -11,8 +11,6 @@ ...@@ -11,8 +11,6 @@
# #
############################################################################## ##############################################################################
""" Worklists in a web-configurable workflow. """ Worklists in a web-configurable workflow.
$Id$
""" """
import re import re
...@@ -24,8 +22,9 @@ from App.class_init import InitializeClass ...@@ -24,8 +22,9 @@ from App.class_init import InitializeClass
from App.special_dtml import DTMLFile from App.special_dtml import DTMLFile
from OFS.SimpleItem import SimpleItem from OFS.SimpleItem import SimpleItem
from Persistence import PersistentMapping from Persistence import PersistentMapping
from zope.component import getUtility
from Products.CMFCore.utils import getToolByName from Products.CMFCore.interfaces import ICatalogTool
from Products.DCWorkflow.ContainerTab import ContainerTab from Products.DCWorkflow.ContainerTab import ContainerTab
from Products.DCWorkflow.Expression import createExprContext from Products.DCWorkflow.Expression import createExprContext
from Products.DCWorkflow.Expression import Expression from Products.DCWorkflow.Expression import Expression
...@@ -169,7 +168,6 @@ class WorklistDefinition(SimpleItem): ...@@ -169,7 +168,6 @@ class WorklistDefinition(SimpleItem):
if info is None: if info is None:
info = {} info = {}
catalog = getToolByName(self, 'portal_catalog')
criteria = {} criteria = {}
for key, values in self.var_matches.items(): for key, values in self.var_matches.items():
...@@ -183,7 +181,8 @@ class WorklistDefinition(SimpleItem): ...@@ -183,7 +181,8 @@ class WorklistDefinition(SimpleItem):
criteria.update(kw) criteria.update(kw)
return catalog.searchResults(**criteria) ctool = getUtility(ICatalogTool)
return ctool.searchResults(**criteria)
InitializeClass(WorklistDefinition) InitializeClass(WorklistDefinition)
......
...@@ -17,11 +17,13 @@ import unittest ...@@ -17,11 +17,13 @@ import unittest
import Testing import Testing
import transaction import transaction
from AccessControl.SecurityManagement import newSecurityManager
from zope.component import adapter from zope.component import adapter
from zope.component import getSiteManager
from zope.component import provideHandler from zope.component import provideHandler
from zope.interface.verify import verifyClass from zope.interface.verify import verifyClass
from AccessControl.SecurityManagement import newSecurityManager
from Products.CMFCore.interfaces import IWorkflowTool
from Products.CMFCore.testing import TraversingEventZCMLLayer from Products.CMFCore.testing import TraversingEventZCMLLayer
from Products.CMFCore.tests.base.dummy import DummyContent from Products.CMFCore.tests.base.dummy import DummyContent
from Products.CMFCore.tests.base.dummy import DummySite from Products.CMFCore.tests.base.dummy import DummySite
...@@ -32,16 +34,18 @@ from Products.CMFCore.WorkflowTool import WorkflowTool ...@@ -32,16 +34,18 @@ from Products.CMFCore.WorkflowTool import WorkflowTool
from Products.DCWorkflow.interfaces import IAfterTransitionEvent from Products.DCWorkflow.interfaces import IAfterTransitionEvent
from Products.DCWorkflow.interfaces import IBeforeTransitionEvent from Products.DCWorkflow.interfaces import IBeforeTransitionEvent
class DCWorkflowDefinitionTests(SecurityTest): class DCWorkflowDefinitionTests(SecurityTest):
layer = TraversingEventZCMLLayer layer = TraversingEventZCMLLayer
def setUp(self): def setUp(self):
SecurityTest.setUp(self) SecurityTest.setUp(self)
self.root._setObject('site', DummySite('site') ) self.app._setObject('site', DummySite('site'))
self.site = self.root._getOb('site') self.site = self.app._getOb('site')
self.site._setObject( 'portal_types', DummyTool() ) self.site._setObject('portal_types', DummyTool())
self.site._setObject( 'portal_workflow', WorkflowTool() ) self.wtool = self.site._setObject('portal_workflow', WorkflowTool())
getSiteManager().registerUtility(self.wtool, IWorkflowTool)
self._constructDummyWorkflow() self._constructDummyWorkflow()
transaction.savepoint(optimistic=True) transaction.savepoint(optimistic=True)
newSecurityManager(None, OmnipotentUser().__of__(self.site)) newSecurityManager(None, OmnipotentUser().__of__(self.site))
...@@ -55,10 +59,10 @@ class DCWorkflowDefinitionTests(SecurityTest): ...@@ -55,10 +59,10 @@ class DCWorkflowDefinitionTests(SecurityTest):
def _constructDummyWorkflow(self): def _constructDummyWorkflow(self):
from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition
wftool = self.site.portal_workflow wtool = self.wtool
wftool._setObject('wf', DCWorkflowDefinition('wf')) wtool._setObject('wf', DCWorkflowDefinition('wf'))
wftool.setDefaultChain('wf') wtool.setDefaultChain('wf')
wf = wftool.wf wf = wtool.wf
wf.states.addState('private') wf.states.addState('private')
sdef = wf.states['private'] sdef = wf.states['private']
...@@ -79,18 +83,15 @@ class DCWorkflowDefinitionTests(SecurityTest): ...@@ -79,18 +83,15 @@ class DCWorkflowDefinitionTests(SecurityTest):
wf.worklists.addWorklist('published_documents') wf.worklists.addWorklist('published_documents')
def _getDummyWorkflow(self): def _getDummyWorkflow(self):
wftool = self.site.portal_workflow return self.wtool.wf
return wftool.wf
def test_doActionFor(self): def test_doActionFor(self):
wtool = self.wtool
wftool = self.site.portal_workflow
wf = self._getDummyWorkflow() wf = self._getDummyWorkflow()
dummy = self.site._setObject( 'dummy', DummyContent() ) dummy = self.site._setObject( 'dummy', DummyContent() )
wftool.notifyCreated(dummy) wtool.notifyCreated(dummy)
self.assertEqual( wf._getStatusOf(dummy), self.assertEqual( wf._getStatusOf(dummy),
{'state': 'private', 'comments': ''} ) {'state': 'private', 'comments': ''} )
wf.doActionFor(dummy, 'publish', comment='foo' ) wf.doActionFor(dummy, 'publish', comment='foo' )
...@@ -100,7 +101,6 @@ class DCWorkflowDefinitionTests(SecurityTest): ...@@ -100,7 +101,6 @@ class DCWorkflowDefinitionTests(SecurityTest):
# XXX more # XXX more
def test_events(self): def test_events(self):
events = [] events = []
@adapter(IBeforeTransitionEvent) @adapter(IBeforeTransitionEvent)
...@@ -113,7 +113,6 @@ class DCWorkflowDefinitionTests(SecurityTest): ...@@ -113,7 +113,6 @@ class DCWorkflowDefinitionTests(SecurityTest):
events.append(event) events.append(event)
provideHandler(_handleAfter) provideHandler(_handleAfter)
wftool = self.site.portal_workflow
wf = self._getDummyWorkflow() wf = self._getDummyWorkflow()
dummy = self.site._setObject( 'dummy', DummyContent() ) dummy = self.site._setObject( 'dummy', DummyContent() )
...@@ -158,11 +157,10 @@ class DCWorkflowDefinitionTests(SecurityTest): ...@@ -158,11 +157,10 @@ class DCWorkflowDefinitionTests(SecurityTest):
self.assertEquals({'test' : 'bar', 'comment' : 'foo'}, evt.kwargs) self.assertEquals({'test' : 'bar', 'comment' : 'foo'}, evt.kwargs)
def test_checkTransitionGuard(self): def test_checkTransitionGuard(self):
wtool = self.wtool
wftool = self.site.portal_workflow
wf = self._getDummyWorkflow() wf = self._getDummyWorkflow()
dummy = self.site._setObject( 'dummy', DummyContent() ) dummy = self.site._setObject( 'dummy', DummyContent() )
wftool.notifyCreated(dummy) wtool.notifyCreated(dummy)
self.assertEqual( wf._getStatusOf(dummy), self.assertEqual( wf._getStatusOf(dummy),
{'state': 'private', 'comments': ''} ) {'state': 'private', 'comments': ''} )
...@@ -175,7 +173,6 @@ class DCWorkflowDefinitionTests(SecurityTest): ...@@ -175,7 +173,6 @@ class DCWorkflowDefinitionTests(SecurityTest):
dummy, arg1=1, arg2=2)) dummy, arg1=1, arg2=2))
def test_isActionSupported(self): def test_isActionSupported(self):
wf = self._getDummyWorkflow() wf = self._getDummyWorkflow()
dummy = self.site._setObject( 'dummy', DummyContent() ) dummy = self.site._setObject( 'dummy', DummyContent() )
...@@ -186,8 +183,6 @@ class DCWorkflowDefinitionTests(SecurityTest): ...@@ -186,8 +183,6 @@ class DCWorkflowDefinitionTests(SecurityTest):
self.assert_(wf.isActionSupported(dummy, 'publish', arg1=1, arg2=2)) self.assert_(wf.isActionSupported(dummy, 'publish', arg1=1, arg2=2))
def test_rename(self): def test_rename(self):
wftool = self.site.portal_workflow
wf = self._getDummyWorkflow() wf = self._getDummyWorkflow()
wf.states.manage_renameObject('private', 'private_new') wf.states.manage_renameObject('private', 'private_new')
......
...@@ -17,29 +17,35 @@ import unittest ...@@ -17,29 +17,35 @@ import unittest
import Testing import Testing
from AccessControl import getSecurityManager from AccessControl import getSecurityManager
from zope.component import getSiteManager
from zope.testing.cleanup import cleanUp
from Products.CMFCore.interfaces import IWorkflowTool
from Products.CMFCore.tests.base.dummy import DummyContent from Products.CMFCore.tests.base.dummy import DummyContent
from Products.CMFCore.tests.base.dummy import DummySite from Products.CMFCore.tests.base.dummy import DummySite
from Products.CMFCore.tests.base.dummy import DummyTool from Products.CMFCore.tests.base.dummy import DummyTool
from Products.CMFCore.WorkflowTool import WorkflowTool from Products.CMFCore.WorkflowTool import WorkflowTool
from Products.DCWorkflow.Guard import Guard
from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition
from Products.DCWorkflow.Guard import Guard
class TestGuard(unittest.TestCase): class TestGuard(unittest.TestCase):
def setUp(self): def setUp(self):
self.site = DummySite('site') self.site = DummySite('site')
self.site._setObject( 'portal_types', DummyTool() ) self.site._setObject('portal_types', DummyTool())
self.site._setObject( 'portal_workflow', WorkflowTool() )
# Construct a workflow # Construct a workflow
wftool = self.site.portal_workflow self.wtool = WorkflowTool()
wftool._setObject('wf', DCWorkflowDefinition('wf')) self.wtool._setObject('wf', DCWorkflowDefinition('wf'))
wftool.setDefaultChain('wf') self.wtool.setDefaultChain('wf')
getSiteManager().registerUtility(self.wtool, IWorkflowTool)
def tearDown(self):
cleanUp()
def _getDummyWorkflow(self): def _getDummyWorkflow(self):
return self.site.portal_workflow['wf'] return self.wtool.wf
def test_BaseGuardAPI(self): def test_BaseGuardAPI(self):
from zope.tales.tales import CompilerError from zope.tales.tales import CompilerError
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment