Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
slapos.core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Romain Courteaud
slapos.core
Commits
22486f55
Commit
22486f55
authored
Jan 09, 2023
by
Romain Courteaud
🐙
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
slapos_cloud: drop the idea of project owner
Project will be products sold on the store
parent
e23cbb59
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
9 additions
and
458 deletions
+9
-458
master/bt5/slapos_cloud/TestTemplateItem/portal_components/test.erp5.testSlapOSCloudProjectSlapInterfaceWorkflow.py
.../test.erp5.testSlapOSCloudProjectSlapInterfaceWorkflow.py
+3
-54
master/bt5/slapos_cloud/TestTemplateItem/portal_components/test.erp5.testSlapOSCloudProjectSlapInterfaceWorkflow.xml
...test.erp5.testSlapOSCloudProjectSlapInterfaceWorkflow.xml
+3
-24
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/person_slap_interface_workflow/script_Person_requestProject.py
...n_slap_interface_workflow/script_Person_requestProject.py
+0
-40
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/person_slap_interface_workflow/script_Person_requestProject.xml
..._slap_interface_workflow/script_Person_requestProject.xml
+0
-76
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/person_slap_interface_workflow/state_draft.xml
...l_workflow/person_slap_interface_workflow/state_draft.xml
+0
-1
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/person_slap_interface_workflow/state_open_order_created.xml
...rson_slap_interface_workflow/state_open_order_created.xml
+0
-1
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/person_slap_interface_workflow/transition_request_project.xml
...on_slap_interface_workflow/transition_request_project.xml
+0
-68
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/project_slap_interface_workflow/script_Project_acceptInvitation.py
...lap_interface_workflow/script_Project_acceptInvitation.py
+2
-0
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/project_slap_interface_workflow/script_Project_approveRegistration.py
..._interface_workflow/script_Project_approveRegistration.py
+0
-37
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/project_slap_interface_workflow/script_Project_approveRegistration.xml
...interface_workflow/script_Project_approveRegistration.xml
+0
-84
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/project_slap_interface_workflow/script_Project_leaveProject.py
...ct_slap_interface_workflow/script_Project_leaveProject.py
+1
-4
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/project_slap_interface_workflow/state_draft.xml
..._workflow/project_slap_interface_workflow/state_draft.xml
+0
-1
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/project_slap_interface_workflow/transition_approve_registration.xml
...ap_interface_workflow/transition_approve_registration.xml
+0
-68
No files found.
master/bt5/slapos_cloud/TestTemplateItem/portal_components/test.erp5.testSlapOSCloudProjectSlapInterfaceWorkflow.py
View file @
22486f55
...
...
@@ -26,9 +26,9 @@ class TestSlapOSCoreProjectSlapInterfaceWorkflow(SlapOSTestCaseMixin):
def
afterSetUp
(
self
):
SlapOSTestCaseMixin
.
afterSetUp
(
self
)
portal
=
self
.
getPortalOb
ject
()
person_user
=
self
.
makePerson
()
self
.
project
=
self
.
addPro
ject
()
person_user
=
self
.
makePerson
(
self
.
project
)
self
.
tic
()
# Login as new user
...
...
@@ -37,9 +37,6 @@ class TestSlapOSCoreProjectSlapInterfaceWorkflow(SlapOSTestCaseMixin):
new_person
=
self
.
portal
.
portal_membership
.
getAuthenticatedMember
().
getUserValue
()
self
.
assertEqual
(
person_user
.
getRelativeUrl
(),
new_person
.
getRelativeUrl
())
self
.
project
=
portal
.
project_module
.
newContent
(
portal_type
=
"Project"
)
# Value set by the init
self
.
assertTrue
(
self
.
project
.
getReference
().
startswith
(
"PROJ-"
),
"Reference don't start with PROJ- : %s"
%
self
.
project
.
getReference
())
...
...
@@ -48,62 +45,16 @@ class TestSlapOSCoreProjectSlapInterfaceWorkflow(SlapOSTestCaseMixin):
def
beforeTearDown
(
self
):
transaction
.
abort
()
def
test_project_approveRegistration_no_reference
(
self
):
self
.
project
.
setReference
(
None
)
self
.
assertRaises
(
ValueError
,
self
.
project
.
approveRegistration
)
def
test_project_approveRegistration_already_validated
(
self
):
# Login as admin since user cannot re-approve a validated project
self
.
login
()
self
.
project
.
setReference
(
None
)
self
.
project
.
validate
()
# Don't raise if project is validated
self
.
assertEqual
(
self
.
project
.
approveRegistration
(),
None
)
def
test_project_approveRegistration
(
self
):
person
=
self
.
portal
.
portal_membership
.
getAuthenticatedMember
().
getUserValue
()
self
.
project
.
approveRegistration
()
self
.
tic
()
self
.
logout
()
self
.
login
(
person
.
getUserId
())
self
.
assertEqual
(
self
.
project
.
getValidationState
(),
'validated'
)
self
.
assertNotEqual
(
self
.
project
.
getStartDate
(),
None
)
assignment_list
=
[
i
for
i
in
person
.
objectValues
(
portal_type
=
"Assignment"
)
if
i
.
getDestinationProjectValue
()
==
self
.
project
]
self
.
assertEqual
(
len
(
assignment_list
),
1
)
self
.
assertEqual
(
assignment_list
[
0
].
getValidationState
(),
'open'
)
self
.
assertIn
(
"Assigment for Project "
,
assignment_list
[
0
].
getTitle
())
def
test_project_leaveProject_no_user
(
self
):
self
.
login
()
self
.
assertRaises
(
Unauthorized
,
self
.
project
.
leaveProject
)
def
test_project_leaveProject_owner
(
self
):
person
=
self
.
portal
.
portal_membership
.
getAuthenticatedMember
().
getUserValue
()
self
.
project
.
edit
(
destination_decision
=
person
.
getRelativeUrl
())
self
.
tic
()
self
.
project
.
leaveProject
()
self
.
assertEqual
(
self
.
project
.
getDestinationDecision
(),
None
)
def
test_project_leaveProject_after_join
(
self
):
person
=
self
.
portal
.
portal_membership
.
getAuthenticatedMember
().
getUserValue
()
# Just make things fast, by using the API tested above
self
.
project
.
approveRegistration
()
self
.
tic
()
self
.
logout
()
self
.
login
(
person
.
getUserId
())
...
...
@@ -173,8 +124,6 @@ class TestSlapOSCoreProjectSlapInterfaceWorkflow(SlapOSTestCaseMixin):
def
test_project_acceptInvitation_already_member
(
self
):
person
=
self
.
portal
.
portal_membership
.
getAuthenticatedMember
().
getUserValue
()
self
.
project
.
approveRegistration
()
self
.
tic
()
self
.
login
()
assignment_list
=
[
i
for
i
in
person
.
objectValues
(
portal_type
=
"Assignment"
)
if
i
.
getDestinationProjectValue
()
==
self
.
project
]
...
...
master/bt5/slapos_cloud/TestTemplateItem/portal_components/test.erp5.testSlapOSCloudProjectSlapInterfaceWorkflow.xml
View file @
22486f55
...
...
@@ -6,12 +6,6 @@
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_recorded_property_dict
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
testSlapOSCloudProjectSlapInterfaceWorkflow
</string>
</value>
...
...
@@ -61,28 +55,13 @@
<item>
<key>
<string>
workflow_history
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
M
=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
I
=
</string>
</persistent>
</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>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
...
...
@@ -95,7 +74,7 @@
<item>
<key>
<string>
component_validation_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
Q
=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
M
=
</string>
</persistent>
</value>
</item>
</dictionary>
...
...
@@ -104,7 +83,7 @@
</dictionary>
</pickle>
</record>
<record
id=
"
4"
aka=
"AAAAAAAAAAQ
="
>
<record
id=
"
3"
aka=
"AAAAAAAAAAM
="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.Workflow"
/>
</pickle>
...
...
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/person_slap_interface_workflow/script_Person_requestProject.py
deleted
100644 → 0
View file @
e23cbb59
person
=
state_change
[
'object'
]
portal
=
person
.
getPortalObject
()
# Get required arguments
kwargs
=
state_change
.
kwargs
# Required args
# Raise TypeError if all parameters are not provided
try
:
project_title
=
kwargs
[
'project_title'
]
except
KeyError
:
raise
TypeError
,
"Person_requestProject takes exactly 1 argument"
tag
=
"%s_%s_ProjectInProgress"
%
(
person
.
getUid
(),
project_title
)
if
(
portal
.
portal_activities
.
countMessageWithTag
(
tag
)
>
0
):
# The software instance is already under creation but can not be fetched from catalog
# As it is not possible to fetch informations, it is better to raise an error
raise
NotImplementedError
(
tag
)
project_portal_type
=
"Project"
project_list
=
portal
.
portal_catalog
.
portal_catalog
(
portal_type
=
project_portal_type
,
title
=
project_title
,
limit
=
2
)
if
len
(
project_list
)
==
2
:
raise
NotImplementedError
elif
len
(
project_list
)
==
1
:
context
.
REQUEST
.
set
(
"project_relative_url"
,
project_list
[
0
].
getRelativeUrl
())
context
.
REQUEST
.
set
(
"project_reference"
,
project_list
[
0
].
getReference
())
else
:
module
=
portal
.
getDefaultModule
(
portal_type
=
project_portal_type
)
project
=
module
.
newContent
(
portal_type
=
project_portal_type
,
title
=
project_title
,
destination_decision_value
=
person
,
activate_kw
=
{
'tag'
:
tag
}
)
context
.
REQUEST
.
set
(
"project_relative_url"
,
project
.
getRelativeUrl
())
context
.
REQUEST
.
set
(
"project_reference"
,
project
.
getReference
())
project
.
approveRegistration
()
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/person_slap_interface_workflow/script_Person_requestProject.xml
deleted
100644 → 0
View file @
e23cbb59
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Workflow Script"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"_reconstructor"
module=
"copy_reg"
/>
</klass>
<tuple>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
<global
name=
"object"
module=
"__builtin__"
/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
state_change
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
script_Person_requestProject
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Workflow Script
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Person_requestProject
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/person_slap_interface_workflow/state_draft.xml
View file @
22486f55
...
...
@@ -19,7 +19,6 @@
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_notify
</string>
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_request_compute_node
</string>
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_request_network
</string>
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_request_project
</string>
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_request_site
</string>
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_request_software_instance
</string>
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_request_support
</string>
...
...
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/person_slap_interface_workflow/state_open_order_created.xml
View file @
22486f55
...
...
@@ -20,7 +20,6 @@
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_notify
</string>
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_request_compute_node
</string>
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_request_network
</string>
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_request_project
</string>
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_request_site
</string>
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_request_software_instance
</string>
<string>
destination/portal_workflow/person_slap_interface_workflow/transition_request_support
</string>
...
...
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/person_slap_interface_workflow/transition_request_project.xml
deleted
100644 → 0
View file @
e23cbb59
<?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>
before_script/portal_workflow/person_slap_interface_workflow/script_Person_checkConsistency
</string>
<string>
after_script/portal_workflow/person_slap_interface_workflow/script_Person_requestProject
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
guard_permission
</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_request_project
</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>
Request Project
</string>
</value>
</item>
<item>
<key>
<string>
trigger_type
</string>
</key>
<value>
<int>
2
</int>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/project_slap_interface_workflow/script_Project_acceptInvitation.py
View file @
22486f55
...
...
@@ -35,6 +35,7 @@ if invitation_token.getSourceValue() == person:
for
assignment
in
person
.
objectValues
(
portal_type
=
"Assignment"
):
if
assignment
.
getDestinationProject
()
==
project
.
getRelativeUrl
()
and
\
assignment
.
getFunction
()
==
'customer'
and
\
assignment
.
getValidationState
()
==
"open"
:
invitation_token
.
invalidate
(
comment
=
"User already has assignment to the Person"
)
break
...
...
@@ -43,6 +44,7 @@ if invitation_token.getValidationState() == "validated":
person
.
newContent
(
title
=
"Assigment for Project %s"
%
project
.
getTitle
(),
portal_type
=
"Assignment"
,
function
=
'customer'
,
destination_project_value
=
project
).
open
()
invitation_token
.
invalidate
()
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/project_slap_interface_workflow/script_Project_approveRegistration.py
deleted
100644 → 0
View file @
e23cbb59
project
=
state_change
[
"object"
]
from
DateTime
import
DateTime
portal
=
context
.
getPortalObject
()
if
project
.
getValidationState
()
!=
"draft"
:
return
if
project
.
getReference
()
in
[
None
,
""
]:
raise
ValueError
(
"Reference is missing on the Project"
)
# Get the user id of the context owner.
local_role_list
=
project
.
get_local_roles
()
for
group
,
role_list
in
local_role_list
:
if
'Owner'
in
role_list
:
user_id
=
group
break
person
=
portal
.
portal_catalog
.
getResultValue
(
user_id
=
user_id
)
if
person
is
None
:
# Value was created by super user, so there isn't a point on continue
return
for
assignment
in
person
.
objectValues
(
portal_type
=
"Assignment"
):
if
assignment
.
getDestinationProject
()
==
project
.
getRelativeUrl
():
if
assignment
.
getValidationState
()
!=
"open"
:
assignment
.
open
()
return
person
.
newContent
(
title
=
"Assigment for Project %s"
%
project
.
getTitle
(),
portal_type
=
"Assignment"
,
destination_project
=
project
.
getRelativeUrl
()).
open
()
project
.
edit
(
start_date
=
DateTime
())
project
.
validate
()
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/project_slap_interface_workflow/script_Project_approveRegistration.xml
deleted
100644 → 0
View file @
e23cbb59
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Workflow Script"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"_reconstructor"
module=
"copy_reg"
/>
</klass>
<tuple>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
<global
name=
"object"
module=
"__builtin__"
/>
<none/>
</tuple>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
state_change
</string>
</value>
</item>
<item>
<key>
<string>
_proxy_roles
</string>
</key>
<value>
<tuple>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
script_Project_approveRegistration
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Workflow Script
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Project_approveRegistration
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/project_slap_interface_workflow/script_Project_leaveProject.py
View file @
22486f55
...
...
@@ -6,11 +6,8 @@ person = portal.portal_membership.getAuthenticatedMember().getUserValue()
if
person
is
None
:
raise
Unauthorized
if
project
.
getDestinationDecision
()
==
person
.
getRelativeUrl
():
project
.
setDestinationDecision
(
None
)
for
assignment
in
person
.
objectValues
(
portal_type
=
"Assignment"
):
# Close all user assignments (customer/admin/...) related to this project
if
assignment
.
getDestinationProject
()
==
project
.
getRelativeUrl
()
and
\
assignment
.
getValidationState
()
!=
'closed'
:
assignment
.
close
()
break
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/project_slap_interface_workflow/state_draft.xml
View file @
22486f55
...
...
@@ -17,7 +17,6 @@
<value>
<tuple>
<string>
destination/portal_workflow/project_slap_interface_workflow/transition_accept_invitation
</string>
<string>
destination/portal_workflow/project_slap_interface_workflow/transition_approve_registration
</string>
<string>
destination/portal_workflow/project_slap_interface_workflow/transition_leave_project
</string>
</tuple>
</value>
...
...
master/bt5/slapos_cloud/WorkflowTemplateItem/portal_workflow/project_slap_interface_workflow/transition_approve_registration.xml
deleted
100644 → 0
View file @
e23cbb59
<?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>
before_script/portal_workflow/project_slap_interface_workflow/script_Project_checkConsistency
</string>
<string>
after_script/portal_workflow/project_slap_interface_workflow/script_Project_approveRegistration
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
guard_permission
</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_approve_registration
</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>
Approve Registration
</string>
</value>
</item>
<item>
<key>
<string>
trigger_type
</string>
</key>
<value>
<int>
2
</int>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment