Commit 55b1ba70 authored by Łukasz Nowak's avatar Łukasz Nowak

slapos_pdm: Drop needless cleanup on Software Release

The state of Software Release being cleaned up or not is really never
known, so simply drop the concept.

Use case to cover, is some developer having upgrade_scope=auto set and
installing archived SRs - it IS expected that such SR would be cleaned
if not used.
parent 439786ba
...@@ -3,10 +3,6 @@ ...@@ -3,10 +3,6 @@
<type>Software Product</type> <type>Software Product</type>
<workflow>-validation_workflow, commerce_validation_workflow</workflow> <workflow>-validation_workflow, commerce_validation_workflow</workflow>
</chain> </chain>
<chain>
<type>Software Release</type>
<workflow>slapos_software_release_cleanup_workflow</workflow>
</chain>
<chain> <chain>
<type>Upgrade Decision</type> <type>Upgrade Decision</type>
<workflow>edit_workflow, ticket_interaction_workflow, upgrade_decision_workflow</workflow> <workflow>edit_workflow, ticket_interaction_workflow, upgrade_decision_workflow</workflow>
......
...@@ -3,7 +3,6 @@ portal = context.getPortalObject() ...@@ -3,7 +3,6 @@ portal = context.getPortalObject()
portal.portal_catalog.searchAndActivate( portal.portal_catalog.searchAndActivate(
portal_type='Software Release', portal_type='Software Release',
validation_state = 'archived', validation_state = 'archived',
simulation_state = 'draft',
method_id = 'SoftwareRelease_findAndDestroySoftwareInstallation', method_id = 'SoftwareRelease_findAndDestroySoftwareInstallation',
method_kw = {'tag': tag}, method_kw = {'tag': tag},
activate_kw = {'tag':tag} activate_kw = {'tag':tag}
......
if context.getValidationState() != 'archived': if context.getValidationState() != 'archived':
return return
if context.getSimulationState() == 'cleaned':
return
portal = context.getPortalObject() portal = context.getPortalObject()
catalog_kw = dict( catalog_kw = dict(
...@@ -11,15 +9,8 @@ catalog_kw = dict( ...@@ -11,15 +9,8 @@ catalog_kw = dict(
**{"slapos_item.slap_state": "start_requested"} **{"slapos_item.slap_state": "start_requested"}
) )
count = portal.portal_catalog.countResults( portal.portal_catalog.searchAndActivate(
**catalog_kw
)
if count[0][0] == 0:
context.cleanup(comment='No more validated Software Installations found')
else:
portal.portal_catalog.searchAndActivate(
method_id = 'SoftwareInstallation_destroyWithSoftwareReleaseArchived', method_id = 'SoftwareInstallation_destroyWithSoftwareReleaseArchived',
activate_kw = {'tag':tag}, activate_kw = {'tag':tag},
**catalog_kw **catalog_kw
) )
...@@ -63,7 +63,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -63,7 +63,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
) )
archived_software_release.publish() archived_software_release.publish()
archived_software_release.archive() archived_software_release.archive()
self.assertEqual('draft', archived_software_release.getSimulationState())
# install an software release # install an software release
archived_software_installation = self.portal.software_installation_module\ archived_software_installation = self.portal.software_installation_module\
.newContent(portal_type='Software Installation', .newContent(portal_type='Software Installation',
...@@ -81,7 +80,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -81,7 +80,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
) )
archived_used_software_release.publish() archived_used_software_release.publish()
archived_used_software_release.archive() archived_used_software_release.archive()
self.assertEqual('draft', archived_used_software_release.getSimulationState())
# install an software release # install an software release
archived_used_software_installation = self.portal.software_installation_module\ archived_used_software_installation = self.portal.software_installation_module\
.newContent(portal_type='Software Installation', .newContent(portal_type='Software Installation',
...@@ -104,7 +102,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -104,7 +102,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
url_string=published_url_string url_string=published_url_string
) )
published_software_release.publish() published_software_release.publish()
self.assertEqual('draft', published_software_release.getSimulationState())
# install an software release # install an software release
published_software_installation = self.portal.software_installation_module\ published_software_installation = self.portal.software_installation_module\
.newContent(portal_type='Software Installation', .newContent(portal_type='Software Installation',
...@@ -128,15 +125,10 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -128,15 +125,10 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
self.assertEqual('start_requested', archived_used_software_installation.getSlapState()) self.assertEqual('start_requested', archived_used_software_installation.getSlapState())
self.assertEqual('validated', archived_used_software_installation.getValidationState()) self.assertEqual('validated', archived_used_software_installation.getValidationState())
self.assertEqual('draft', archived_software_release.getSimulationState())
self.assertEqual('draft', published_software_release.getSimulationState())
# second run, but it is still not reported that software installation is destroyed # second run, but it is still not reported that software installation is destroyed
self.stepCallSlaposPdmDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm() self.stepCallSlaposPdmDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm()
self.tic() self.tic()
self.assertEqual('cleaned', archived_software_release.getSimulationState())
self.assertEqual('draft', published_software_release.getSimulationState())
self.assertEqual('start_requested', published_software_installation.getSlapState()) self.assertEqual('start_requested', published_software_installation.getSlapState())
self.assertEqual('validated', archived_used_software_installation.getValidationState()) self.assertEqual('validated', archived_used_software_installation.getValidationState())
self.assertEqual('start_requested', archived_used_software_installation.getSlapState()) self.assertEqual('start_requested', archived_used_software_installation.getSlapState())
...@@ -156,7 +148,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -156,7 +148,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
) )
archived_software_release.publish() archived_software_release.publish()
archived_software_release.archive() archived_software_release.archive()
self.assertEqual('draft', archived_software_release.getSimulationState())
# install an software release # install an software release
archived_software_installation = self.portal.software_installation_module\ archived_software_installation = self.portal.software_installation_module\
.newContent(portal_type='Software Installation', .newContent(portal_type='Software Installation',
...@@ -174,7 +165,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -174,7 +165,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
) )
archived_used_software_release.publish() archived_used_software_release.publish()
archived_used_software_release.archive() archived_used_software_release.archive()
self.assertEqual('draft', archived_used_software_release.getSimulationState())
# install an software release # install an software release
archived_used_software_installation = self.portal.software_installation_module\ archived_used_software_installation = self.portal.software_installation_module\
.newContent(portal_type='Software Installation', .newContent(portal_type='Software Installation',
...@@ -197,7 +187,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -197,7 +187,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
url_string=published_url_string url_string=published_url_string
) )
published_software_release.publish() published_software_release.publish()
self.assertEqual('draft', published_software_release.getSimulationState())
# install an software release # install an software release
published_software_installation = self.portal.software_installation_module\ published_software_installation = self.portal.software_installation_module\
.newContent(portal_type='Software Installation', .newContent(portal_type='Software Installation',
...@@ -221,9 +210,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -221,9 +210,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
self.assertEqual('start_requested', archived_used_software_installation.getSlapState()) self.assertEqual('start_requested', archived_used_software_installation.getSlapState())
self.assertEqual('validated', archived_used_software_installation.getValidationState()) self.assertEqual('validated', archived_used_software_installation.getValidationState())
self.assertEqual('draft', archived_software_release.getSimulationState())
self.assertEqual('draft', published_software_release.getSimulationState())
@simulateByEditWorkflowMark('SoftwareRelease_findAndDestroySoftwareInstallation') @simulateByEditWorkflowMark('SoftwareRelease_findAndDestroySoftwareInstallation')
def test_no_op_run_software_release(self): def test_no_op_run_software_release(self):
archived_software_release = self.portal.software_release_module.newContent( archived_software_release = self.portal.software_release_module.newContent(
...@@ -233,7 +219,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -233,7 +219,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
) )
archived_software_release.publish() archived_software_release.publish()
archived_software_release.archive() archived_software_release.archive()
self.assertEqual('draft', archived_software_release.getSimulationState())
archived_cleaned_software_release = self.portal.software_release_module.newContent( archived_cleaned_software_release = self.portal.software_release_module.newContent(
portal_type='Software Release', portal_type='Software Release',
...@@ -242,8 +227,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -242,8 +227,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
) )
archived_cleaned_software_release.publish() archived_cleaned_software_release.publish()
archived_cleaned_software_release.archive() archived_cleaned_software_release.archive()
archived_cleaned_software_release.cleanup()
self.assertEqual('cleaned', archived_cleaned_software_release.getSimulationState())
published_software_release = self.portal.software_release_module.newContent( published_software_release = self.portal.software_release_module.newContent(
portal_type='Software Release', portal_type='Software Release',
...@@ -251,7 +234,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -251,7 +234,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
url_string=self.generateNewSoftwareReleaseUrl(), url_string=self.generateNewSoftwareReleaseUrl(),
) )
published_software_release.publish() published_software_release.publish()
self.assertEqual('draft', published_software_release.getSimulationState())
self.tic() self.tic()
self.stepCallSlaposPdmDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm() self.stepCallSlaposPdmDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm()
...@@ -260,7 +242,7 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -260,7 +242,7 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
v = 'Visited by SoftwareRelease_findAndDestroySoftwareInstallation' v = 'Visited by SoftwareRelease_findAndDestroySoftwareInstallation'
self.assertFalse(v in self.assertFalse(v in
[q['comment'] for q in published_software_release.workflow_history['edit_workflow']]) [q['comment'] for q in published_software_release.workflow_history['edit_workflow']])
self.assertFalse(v in self.assertTrue(v in
[q['comment'] for q in archived_cleaned_software_release.workflow_history['edit_workflow']]) [q['comment'] for q in archived_cleaned_software_release.workflow_history['edit_workflow']])
self.assertTrue(v in self.assertTrue(v in
[q['comment'] for q in archived_software_release.workflow_history['edit_workflow']]) [q['comment'] for q in archived_software_release.workflow_history['edit_workflow']])
...@@ -283,7 +265,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap ...@@ -283,7 +265,6 @@ class TestSlapOSDestroySoftwareInstallationWithArchivedSoftwareReleaseAlarm(Slap
) )
archived_software_release.publish() archived_software_release.publish()
archived_software_release.archive() archived_software_release.archive()
self.assertEqual('draft', archived_software_release.getSimulationState())
software_installation_validated_request_start = self.portal.software_installation_module\ software_installation_validated_request_start = self.portal.software_installation_module\
.newContent(portal_type='Software Installation', .newContent(portal_type='Software Installation',
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_count</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_mt_index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>source/portal_workflow/slapos_software_release_cleanup_workflow/state_draft</string>
</tuple>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>slapos_software_release_cleanup_workflow</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>slapos_software_release_cleanup_workflow</string> </value>
</item>
<item>
<key> <string>manager_bypass</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow</string> </value>
</item>
<item>
<key> <string>state_variable</string> </key>
<value> <string>simulation_state</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Software Release Cleanup Workflow</string> </value>
</item>
<item>
<key> <string>workflow_managed_permission</string> </key>
<value>
<tuple>
<string>Access contents information</string>
<string>View</string>
<string>Add portal content</string>
<string>Modify portal content</string>
<string>Delete objects</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Length" module="BTrees.Length"/>
</pickle>
<pickle> <int>0</int> </pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow State" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>acquire_permission</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_cleaned</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow State</string> </value>
</item>
<item>
<key> <string>state_permission_role_list_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>state_type</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Cleaned</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow State" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>acquire_permission</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>destination/portal_workflow/slapos_software_release_cleanup_workflow/transition_cleanup</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_draft</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow State</string> </value>
</item>
<item>
<key> <string>state_permission_role_list_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>state_type</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Draft</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action_name</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/slapos_software_release_cleanup_workflow/state_cleaned</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_cleanup</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Cleanup</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Variable" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>automatic_update</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Transition id</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>variable_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>variable_default_expression</string> </key>
<value> <string>transition/getReference|nothing</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Variable" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>automatic_update</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Name of the user who performed transition</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>variable_actor</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>variable_default_expression</string> </key>
<value> <string>user/getIdOrUserName</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Variable" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>automatic_update</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Comment about transition</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>variable_comment</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>variable_default_expression</string> </key>
<value> <string>python:state_change.kwargs.get(\'comment\', \'\')</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Variable" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>automatic_update</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Error message if validation failed</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>variable_error_message</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Variable" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>automatic_update</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Provides access to workflow history</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>variable_history</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>variable_default_expression</string> </key>
<value> <string>state_change/getHistory</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Variable" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>automatic_update</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Portal type (used as filter for worklists)</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>variable_portal_type</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Variable" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>automatic_update</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Transition timestamp</string> </value>
</item>
<item>
<key> <string>for_catalog</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>variable_time</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Variable</string> </value>
</item>
<item>
<key> <string>status_included</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>variable_default_expression</string> </key>
<value> <string>state_change/getDateTime</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
Software Product | -validation_workflow Software Product | -validation_workflow
Software Product | commerce_validation_workflow Software Product | commerce_validation_workflow
Software Release | slapos_software_release_cleanup_workflow
Upgrade Decision | edit_workflow Upgrade Decision | edit_workflow
Upgrade Decision | ticket_interaction_workflow Upgrade Decision | ticket_interaction_workflow
Upgrade Decision | upgrade_decision_workflow Upgrade Decision | upgrade_decision_workflow
\ No newline at end of file
slapos_software_release_cleanup_workflow
upgrade_decision_workflow upgrade_decision_workflow
\ No newline at end of file
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