[CMF-checkins] CVS: CMF/CMFSetup - workflow.py:1.36

Tchertchian Anahide anahide.tchertchian at gmail.com
Thu Jul 7 11:50:08 EDT 2005


Update of /cvs-repository/CMF/CMFSetup
In directory cvs.zope.org:/tmp/cvs-serv31967/CMFSetup

Modified Files:
	workflow.py 
Log Message:
CMFSetup.workflow bugfixes: scripts were not exported (they're now in a scripts subdirectory), and encoding was not propagated at import time


=== CMF/CMFSetup/workflow.py 1.35 => 1.36 ===
--- CMF/CMFSetup/workflow.py:1.35	Wed May  4 17:17:58 2005
+++ CMF/CMFSetup/workflow.py	Thu Jul  7 11:50:07 2005
@@ -187,6 +187,7 @@
 
         wf_dirname = wf_id.replace( ' ', '_' )
         wf_xml = wfdc.generateWorkflowXML( wf_id )
+        wf_scripts = wfdc.getWorkflowScripts(wf_id)
 
         if wf_xml is not None:
             context.writeDataFile( 'definition.xml'
@@ -194,6 +195,10 @@
                                  , 'text/xml'
                                  , 'workflows/%s' % wf_dirname
                                  )
+            for script_info in wf_scripts:
+                context.writeDataFile(script_info['filename'],
+                                      script_info['body'],
+                                      'text/plain')
 
     return 'Workflows exported.'
 
@@ -289,7 +294,7 @@
         for wf in val:
             if wf['meta_type'] == DCWorkflowDefinition.meta_type:
                 if wf['filename'] == wf['workflow_id']:
-                    wf['filename'] = _getTypeFilename( wf['filename'] )
+                    wf['filename'] = _getWorkflowFilename( wf['filename'] )
             else:
                 wf['filename'] = None
 
@@ -358,6 +363,20 @@
 
         return self._workflowConfig( workflow_id=workflow_id )
 
+    security.declareProtected( ManagePortal, 'generateWorkflowScripts' )
+    def getWorkflowScripts( self, workflow_id ):
+        """ Get workflow scripts inforation
+        """
+        workflow_tool = getToolByName( self._site, 'portal_workflow' )
+        workflow = workflow_tool.getWorkflowById( workflow_id )
+
+        if workflow.meta_type != DCWorkflowDefinition.meta_type:
+            return []
+
+        scripts = self._extractScripts(workflow)
+        return scripts
+
+
     security.declareProtected( ManagePortal, 'parseWorkflowXML' )
     def parseWorkflowXML( self, xml, encoding=None ):
 
@@ -372,12 +391,12 @@
         state_variable = _getNodeAttribute( root, 'state_variable', encoding )
         initial_state = _getNodeAttribute( root, 'initial_state', encoding )
 
-        states = _extractStateNodes( root )
-        transitions = _extractTransitionNodes( root )
-        variables = _extractVariableNodes( root )
-        worklists = _extractWorklistNodes( root )
-        permissions = _extractPermissionNodes( root )
-        scripts = _extractScriptNodes( root )
+        states = _extractStateNodes( root, encoding )
+        transitions = _extractTransitionNodes( root, encoding )
+        variables = _extractVariableNodes( root, encoding )
+        worklists = _extractWorklistNodes( root, encoding )
+        permissions = _extractPermissionNodes( root, encoding )
+        scripts = _extractScriptNodes( root, encoding )
 
         return ( workflow_id
                , title
@@ -809,7 +828,7 @@
     """
     wf_dir = workflow_id.replace( ' ', '_' )
     suffix = _METATYPE_SUFFIXES[ meta_type ]
-    return 'workflows/%s/%s.%s' % ( wf_dir, script_id, suffix )
+    return 'workflows/%s/scripts/%s.%s' % ( wf_dir, script_id, suffix )
 
 def _extractStateNodes( root, encoding=None ):
 



More information about the CMF-checkins mailing list