[Checkins] SVN: CMF/trunk/DCWorkflow/ Raise an error for invalid
script meta_types, handle arbitrary script
Ross Patterson
me at rpatterson.net
Sun Oct 7 23:43:43 EDT 2007
Log message for revision 80702:
Raise an error for invalid script meta_types, handle arbitrary script
meta_types
Changed:
U CMF/trunk/DCWorkflow/exportimport.py
U CMF/trunk/DCWorkflow/tests/test_exportimport.py
-=-
Modified: CMF/trunk/DCWorkflow/exportimport.py
===================================================================
--- CMF/trunk/DCWorkflow/exportimport.py 2007-10-08 00:34:34 UTC (rev 80701)
+++ CMF/trunk/DCWorkflow/exportimport.py 2007-10-08 03:43:41 UTC (rev 80702)
@@ -1156,6 +1156,18 @@
elif meta_type == DTMLMethod.meta_type:
script = DTMLMethod( file, __name__=id )
+ else:
+ for mt in workflow.scripts.filtered_meta_types():
+ if mt['name']==meta_type:
+ if hasattr(mt['instance'], 'write'):
+ script = mt['instance'](id)
+ script.write(file)
+ else:
+ script = mt['instance'](file, __name__=id)
+ break
+ else:
+ raise ValueError, 'Invalid type: %s' % meta_type
+
if workflow.scripts.has_key(id):
workflow.scripts._delObject(id)
workflow.scripts._setObject( id, script )
Modified: CMF/trunk/DCWorkflow/tests/test_exportimport.py
===================================================================
--- CMF/trunk/DCWorkflow/tests/test_exportimport.py 2007-10-08 00:34:34 UTC (rev 80701)
+++ CMF/trunk/DCWorkflow/tests/test_exportimport.py 2007-10-08 03:43:41 UTC (rev 80702)
@@ -2423,7 +2423,53 @@
if script.meta_type == PythonScript.meta_type:
self.assertEqual( script.manage_FTPget(), expected[ 1 ] )
+ def test_scripts_with_invalid_meta_type(self):
+ """
+ A script with an invalid meta_type should raise an error.
+ Otherwise the previous script will be added for that script.
+ """
+ from Products.DCWorkflow import exportimport
+
+ tool = self._importNormalWorkflow(
+ 'dcworkflow_scripts', 'DC Workflow testing scripts',
+ 'Testing Scripts', 'closed')
+ workflow = tool.objectValues()[1]
+ scripts = workflow.scripts
+
+ s_infos = [
+ dict(script_id='invalid', meta_type='invalid',
+ filename='')]
+ self.assertRaises(ValueError,
+ exportimport._initDCWorkflowScripts,
+ workflow, s_infos, None)
+
+ def test_scripts_by_meta_type(self):
+ """
+ Constructors for meta_types other than those hard coded should
+ be looked up.
+ """
+ from Products.DCWorkflow import exportimport
+
+ tool = self._importNormalWorkflow(
+ 'dcworkflow_scripts', 'DC Workflow testing scripts',
+ 'Testing Scripts', 'closed')
+ workflow = tool.objectValues()[1]
+ scripts = workflow.scripts
+
+ scripts.all_meta_types = scripts.all_meta_types() + [
+ dict(instance=PythonScript, name='Foo Script')]
+
+ s_infos = [
+ dict(script_id='doc', meta_type='DTML Document',
+ filename=''),
+ dict(script_id='bar', meta_type='Foo Script',
+ filename='')]
+ exportimport._initDCWorkflowScripts(workflow, s_infos, None)
+
+ self.assertEqual(scripts['doc'].meta_type, 'DTML Document')
+ self.assertEqual(scripts['bar'].meta_type, 'Script (Python)')
+
def test_suite():
return unittest.TestSuite((
unittest.makeSuite( WorkflowDefinitionConfiguratorTests ),
More information about the Checkins
mailing list