diff --git a/master/bt5/slapos_erp5/LocalRolesTemplateItem/assignment_request_module.xml b/master/bt5/slapos_erp5/LocalRolesTemplateItem/assignment_request_module.xml new file mode 100644 index 0000000000000000000000000000000000000000..c20800c60597ed3e24331b17803c187d243a4d4d --- /dev/null +++ b/master/bt5/slapos_erp5/LocalRolesTemplateItem/assignment_request_module.xml @@ -0,0 +1,12 @@ +<local_roles_item> + <local_roles> + <role id='F-PRODUCTION*'> + <item>Auditor</item> + </role> + </local_roles> + <local_role_group_ids> + <local_role_group_id id='function'> + <principal id='F-PRODUCTION*'>Auditor</principal> + </local_role_group_id> + </local_role_group_ids> +</local_roles_item> \ No newline at end of file diff --git a/master/bt5/slapos_erp5/LocalRolesTemplateItem/invitation_token_module.xml b/master/bt5/slapos_erp5/LocalRolesTemplateItem/invitation_token_module.xml index ed9902d34c97653d887e77c8bedb6b1578637a16..986ee0a1c23294124b2bc4f78218bd3d700b8217 100644 --- a/master/bt5/slapos_erp5/LocalRolesTemplateItem/invitation_token_module.xml +++ b/master/bt5/slapos_erp5/LocalRolesTemplateItem/invitation_token_module.xml @@ -1,4 +1,14 @@ <local_roles_item> <local_roles> + <role id='F-PRODUCTION*'> + <item>Auditor</item> + <item>Author</item> + </role> </local_roles> + <local_role_group_ids> + <local_role_group_id id='function'> + <principal id='F-PRODUCTION*'>Auditor</principal> + <principal id='F-PRODUCTION*'>Author</principal> + </local_role_group_id> + </local_role_group_ids> </local_roles_item> \ No newline at end of file diff --git a/master/bt5/slapos_erp5/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml b/master/bt5/slapos_erp5/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml index ddfc57b63b34bcc6d138af28ed48b8f8c559bfaf..ab5a13e41fa8c3b1a3e66c13937d06be94c8d44a 100644 --- a/master/bt5/slapos_erp5/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml +++ b/master/bt5/slapos_erp5/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml @@ -3,7 +3,6 @@ <item>Cloud Contract Line</item> </portal_type> <portal_type id="Invitation Token Module"> - <item>Contract Invitation Token</item> <item>Invitation Token</item> </portal_type> <portal_type id="Organisation"> diff --git a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Assignment%20Request%20Module.xml b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Assignment%20Request%20Module.xml new file mode 100644 index 0000000000000000000000000000000000000000..8a6eb593209cdc2c728679e7111437142739728a --- /dev/null +++ b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Assignment%20Request%20Module.xml @@ -0,0 +1,8 @@ +<type_roles> + <role id='Auditor'> + <property id='title'>Production</property> + <multi_property id='categories'>local_role_group/function</multi_property> + <multi_property id='category'>function/production*</multi_property> + <multi_property id='base_category'>function</multi_property> + </role> +</type_roles> \ No newline at end of file diff --git a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Assignment%20Request.xml b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Assignment%20Request.xml new file mode 100644 index 0000000000000000000000000000000000000000..600ebe860dd0f884a53c0e7a8e5bb4f3e5abf22f --- /dev/null +++ b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Assignment%20Request.xml @@ -0,0 +1,2 @@ +<type_roles> +</type_roles> \ No newline at end of file diff --git a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token%20Module.xml b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token%20Module.xml index 600ebe860dd0f884a53c0e7a8e5bb4f3e5abf22f..342641d5a755bdcc399b48595fa694ea2e07c56b 100644 --- a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token%20Module.xml +++ b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token%20Module.xml @@ -1,2 +1,8 @@ <type_roles> + <role id='Auditor; Author'> + <property id='title'>Production</property> + <multi_property id='categories'>local_role_group/function</multi_property> + <multi_property id='category'>function/production*</multi_property> + <multi_property id='base_category'>function</multi_property> + </role> </type_roles> \ No newline at end of file diff --git a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token.xml b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token.xml new file mode 100644 index 0000000000000000000000000000000000000000..6273fe0f65e5359ed93ee713815daa5723ab6ce5 --- /dev/null +++ b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Invitation%20Token.xml @@ -0,0 +1,20 @@ +<type_roles> + <role id='Assignee'> + <property id='title'>Destination Project Production Agent</property> + <property id='description'>XXX add local role group</property> + <property id='condition'>python: context.getDestinationProject('', portal_type='Project') != ""</property> + <property id='base_category_script'>ERP5Type_getSecurityCategoryFromContent</property> + <multi_property id='categories'>local_role_group/project</multi_property> + <multi_property id='category'>function/production/agent</multi_property> + <multi_property id='base_category'>destination_project</multi_property> + </role> + <role id='Assignor'> + <property id='title'>Destination Project Production Manager</property> + <property id='description'>XXX add local role group</property> + <property id='condition'>python: context.getDestinationProject('', portal_type='Project') != ""</property> + <property id='base_category_script'>ERP5Type_getSecurityCategoryFromContent</property> + <multi_property id='categories'>local_role_group/project</multi_property> + <multi_property id='category'>function/production/manager</multi_property> + <multi_property id='base_category'>destination_project</multi_property> + </role> +</type_roles> \ No newline at end of file diff --git a/master/bt5/slapos_erp5/PortalTypeTemplateItem/portal_types/Invitation%20Token.xml b/master/bt5/slapos_erp5/PortalTypeTemplateItem/portal_types/Invitation%20Token.xml index 6838116df63b30878d4d36da445272e207ec8997..1a2a153dadd5fb3b014258306eb993f8f5773219 100644 --- a/master/bt5/slapos_erp5/PortalTypeTemplateItem/portal_types/Invitation%20Token.xml +++ b/master/bt5/slapos_erp5/PortalTypeTemplateItem/portal_types/Invitation%20Token.xml @@ -42,9 +42,15 @@ <key> <string>portal_type</string> </key> <value> <string>Base Type</string> </value> </item> + <item> + <key> <string>short_title</string> </key> + <value> + <none/> + </value> + </item> <item> <key> <string>type_class</string> </key> - <value> <string>XMLObject</string> </value> + <value> <string>Ticket</string> </value> </item> <item> <key> <string>type_interface</string> </key> diff --git a/master/bt5/slapos_erp5/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml b/master/bt5/slapos_erp5/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml index 4e5980743621d3c9c006cd31e3a62b943962b8f0..b0148aad1428657d2c554f7e42f53a16f137fcc1 100644 --- a/master/bt5/slapos_erp5/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml +++ b/master/bt5/slapos_erp5/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml @@ -77,7 +77,7 @@ </chain> <chain> <type>Invitation Token</type> - <workflow>edit_workflow, validation_workflow</workflow> + <workflow>edit_workflow, local_permission_slapos_interaction_workflow, validation_workflow</workflow> </chain> <chain> <type>Mail Message</type> diff --git a/master/bt5/slapos_erp5/TestTemplateItem/portal_components/test.erp5.testSlapOSERP5GroupRoleSecurity.py b/master/bt5/slapos_erp5/TestTemplateItem/portal_components/test.erp5.testSlapOSERP5GroupRoleSecurity.py index d78aec895e6de29f5bec38ef489640d2efa8950c..fc7b871f76c8f3b303b80073549c631f1d84acd0 100644 --- a/master/bt5/slapos_erp5/TestTemplateItem/portal_components/test.erp5.testSlapOSERP5GroupRoleSecurity.py +++ b/master/bt5/slapos_erp5/TestTemplateItem/portal_components/test.erp5.testSlapOSERP5GroupRoleSecurity.py @@ -1019,6 +1019,15 @@ class TestSoftwareProduct(TestSlapOSGroupRoleSecurityMixin): self.assertRoles(product, '%s_F-CUSTOMER' % project.getReference(), ['Auditor']) +class TestInvitationTokenModule(TestSlapOSGroupRoleSecurityMixin): + def test_InvitationTokenModule(self): + module = self.portal.invitation_token_module + self.assertSecurityGroup(module, + ['F-PRODUCTION*', module.Base_getOwnerId()], False) + self.assertRoles(module, 'F-PRODUCTION*', ['Auditor', 'Author']) + self.assertRoles(module, module.Base_getOwnerId(), ['Owner']) + + class TestSupportRequestModule(TestSlapOSGroupRoleSecurityMixin): def test_SupportRequestModule(self): module = self.portal.support_request_module @@ -1030,6 +1039,30 @@ class TestSupportRequestModule(TestSlapOSGroupRoleSecurityMixin): self.assertRoles(module, module.Base_getOwnerId(), ['Owner']) +class TestInvitationToken(TestSlapOSGroupRoleSecurityMixin): + ticket_portal_type = 'Invitation Token' + + def test_InvitationToken_default(self): + support_request = self.portal.getDefaultModuleValue(self.ticket_portal_type).newContent( + portal_type=self.ticket_portal_type) + self.assertSecurityGroup(support_request, + [self.user_id], False) + self.assertRoles(support_request, self.user_id, ['Owner']) + + def test_InvitationToken_DestinationProject(self): + project = self.addProject() + support_request = self.portal.getDefaultModuleValue(self.ticket_portal_type).newContent( + portal_type=self.ticket_portal_type) + support_request.edit( + destination_project_value=project) + self.assertSecurityGroup(support_request, [self.user_id, + '%s_F-PRODAGNT' % project.getReference(), + '%s_F-PRODMAN' % project.getReference()], False) + self.assertRoles(support_request, self.user_id, ['Owner']) + self.assertRoles(support_request, '%s_F-PRODMAN' % project.getReference(), ['Assignor']) + self.assertRoles(support_request, '%s_F-PRODAGNT' % project.getReference(), ['Assignee']) + + class TestSupportRequest(TestSlapOSGroupRoleSecurityMixin): ticket_portal_type = 'Support Request' diff --git a/master/bt5/slapos_erp5/WorkflowTemplateItem/portal_workflow/local_permission_slapos_interaction_workflow/interaction_SupportRequest_edit.xml b/master/bt5/slapos_erp5/WorkflowTemplateItem/portal_workflow/local_permission_slapos_interaction_workflow/interaction_SupportRequest_edit.xml index 310c8b1084b1dcf4e9724d3e8d16deeceb3ee3e7..dadc23223d557bd31b73a69cfa4ec1f0d00ecc09 100644 --- a/master/bt5/slapos_erp5/WorkflowTemplateItem/portal_workflow/local_permission_slapos_interaction_workflow/interaction_SupportRequest_edit.xml +++ b/master/bt5/slapos_erp5/WorkflowTemplateItem/portal_workflow/local_permission_slapos_interaction_workflow/interaction_SupportRequest_edit.xml @@ -35,6 +35,7 @@ <string>Support Request</string> <string>Upgrade Decision</string> <string>Regularisation Request</string> + <string>Invitation Token</string> </tuple> </value> </item> diff --git a/master/bt5/slapos_erp5/bt/template_local_role_list b/master/bt5/slapos_erp5/bt/template_local_role_list index 4623ca4020d893121895450c65a481f1acca3edc..9b59721a1f93b6a790a79bdc41dc08d2aa4d8c33 100644 --- a/master/bt5/slapos_erp5/bt/template_local_role_list +++ b/master/bt5/slapos_erp5/bt/template_local_role_list @@ -16,6 +16,7 @@ account_module/refundable_vat account_module/sales accounting_module allocation_supply_module +assignment_request_module business_process_module business_process_module/slapos_sale_subscription_business_process cloud_contract_module diff --git a/master/bt5/slapos_erp5/bt/template_portal_type_allowed_content_type_list b/master/bt5/slapos_erp5/bt/template_portal_type_allowed_content_type_list index 201f3a28808792964381862c5dff65f3de220b1c..c30a93ed29892987ac6352db2c364c50dd2c4f06 100644 --- a/master/bt5/slapos_erp5/bt/template_portal_type_allowed_content_type_list +++ b/master/bt5/slapos_erp5/bt/template_portal_type_allowed_content_type_list @@ -1,5 +1,4 @@ Contract Invitation Token | Cloud Contract Line -Invitation Token Module | Contract Invitation Token Invitation Token Module | Invitation Token Organisation | Geographical Area Organisation | Geographical Location \ No newline at end of file diff --git a/master/bt5/slapos_erp5/bt/template_portal_type_role_list b/master/bt5/slapos_erp5/bt/template_portal_type_role_list index bd79771e6e612a766259bb37a0580f5fb744654b..ce7ba0499f58a3e47cb48c2e94b21f5814e162d7 100644 --- a/master/bt5/slapos_erp5/bt/template_portal_type_role_list +++ b/master/bt5/slapos_erp5/bt/template_portal_type_role_list @@ -8,6 +8,8 @@ Acknowledgement Allocation Supply Allocation Supply Module Assignment +Assignment Request +Assignment Request Module Balance Transaction Bank Account Business Process @@ -43,6 +45,7 @@ Instance Tree Instance Tree Module Integration Site Integration Tool +Invitation Token Invitation Token Module Letter Mail Message diff --git a/master/bt5/slapos_erp5/bt/template_portal_type_workflow_chain_list b/master/bt5/slapos_erp5/bt/template_portal_type_workflow_chain_list index a87d9e0bc3bd68d7082fcc8f5562d94154cba6a5..aba7928c99e330f2fb3a0e176f00cdd8e43e41ec 100644 --- a/master/bt5/slapos_erp5/bt/template_portal_type_workflow_chain_list +++ b/master/bt5/slapos_erp5/bt/template_portal_type_workflow_chain_list @@ -21,6 +21,7 @@ Inventory Cell | -immobilisation_movement_interaction_workflow Inventory Line | -immobilisation_movement_interaction_workflow Inventory | -immobilisation_movement_interaction_workflow Invitation Token | edit_workflow +Invitation Token | local_permission_slapos_interaction_workflow Invitation Token | validation_workflow Mail Message | local_permission_slapos_interaction_workflow Open Sale Order | local_permission_slapos_interaction_workflow