diff --git a/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequestModule_createSupportRequest.py b/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequestModule_createSupportRequest.py index bf87470717ab107931d5596dac46f3f7af48e742..90fb760e800e8fefad7dfffbc1601c65e4016ab2 100644 --- a/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequestModule_createSupportRequest.py +++ b/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequestModule_createSupportRequest.py @@ -8,7 +8,7 @@ project_object = portal.project_module[project] support_request = portal.support_request_module.newContent( portal_type='Support Request', title=title, - resource="service_module/" + resource, + resource=resource, destination_decision_value=logged_in_user_value, source_decision_value = project_object.getSourceDecisionValue(), source_section_value = project_object.getSourceSectionValue(), diff --git a/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequestModule_viewSupportRequestFastInputDialog/your_resource.xml b/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequestModule_viewSupportRequestFastInputDialog/your_resource.xml index 8c64bc562e5bbdb78be50d7d8b0a9ed3cca54f42..085aa3b943b53ccc1b47ca82d75d95f83359e5f8 100644 --- a/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequestModule_viewSupportRequestFastInputDialog/your_resource.xml +++ b/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequestModule_viewSupportRequestFastInputDialog/your_resource.xml @@ -136,7 +136,7 @@ <dictionary> <item> <key> <string>_text</string> </key> - <value> <string>python: here.SupportRequest_getSupportTypeList(request.get("field_your_project", None)) or [(\'\', \'\')]</string> </value> + <value> <string>python: context.SupportRequest_getSupportTypeList(request.get("your_project", None))</string> </value> </item> </dictionary> </pickle> diff --git a/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequest_getSupportTypeList.py b/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequest_getSupportTypeList.py index eca453a4b62d4b7d0805f30191309fa06e909e72..7a464344651b6ea639077dceb2c20cf401c2f28b 100644 --- a/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequest_getSupportTypeList.py +++ b/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequest_getSupportTypeList.py @@ -1,19 +1,14 @@ portal = context.getPortalObject() +project = None if project_id: - project_list = portal.portal_catalog(portal_type="Project", id=project_id, limit=1) -else: - project_list = portal.portal_catalog(portal_type="Project", validation_state="validated", limit=1) - -try: - project = project_list[0] -except IndexError: - project = None + project = portal.project_module[project_id] result = context.SupportRequest_getSupportTypeListFromProjectValue(project) if json_flag: from json import dumps + container.REQUEST.RESPONSE.setHeader('content-type', 'application/json') return dumps(result) return result diff --git a/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequest_getSupportTypeListFromProjectValue.py b/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequest_getSupportTypeListFromProjectValue.py index 3baec3e7f89f8487c5099436d4b3875c8a7eb545..e0b9e993bc8143265c9f118ee47afb02a4c5b221 100644 --- a/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequest_getSupportTypeListFromProjectValue.py +++ b/bt5/erp5_officejs_support_request_ui/SkinTemplateItem/portal_skins/erp5_officejs_support_request/SupportRequest_getSupportTypeListFromProjectValue.py @@ -1,6 +1,15 @@ +"""Returns the services that can be used on support request for this project. +""" # /!\ proxy role ! + portal = context.getPortalObject() -result = [] +item_list = portal.Ticket_getResourceItemList( + portal_type='Support Request', + include_context=False, +) + +allowed_resource_relative_url_set = set([]) +# if this project has supplies, only allow projects from the supplies. if project_value is not None: sale_supply_list = portal.portal_catalog(portal_type="Sale Supply", destination_project_uid=project_value.getUid()) for sale_supply in sale_supply_list: @@ -8,6 +17,9 @@ if project_value is not None: for supply_line in sale_supply_line_list: service = supply_line.getResourceValue() if service is not None: - result.append((service.getTitle(), service.getId())) + allowed_resource_relative_url_set.add(service.getRelativeUrl()) +if allowed_resource_relative_url_set: + return [('', '')] + [item for item in item_list if item[1] in allowed_resource_relative_url_set] -return result +# otherwise return all support request services +return item_list diff --git a/bt5/erp5_officejs_support_request_ui_test/PathTemplateItem/portal_tests/officejs_support_request_ui_zuite/testSupportRequestModuleAccess.zpt b/bt5/erp5_officejs_support_request_ui_test/PathTemplateItem/portal_tests/officejs_support_request_ui_zuite/testSupportRequestModuleAccess.zpt index 3e0195456684d39fd01f076be6f1892d64cc2b40..a94fed33cb9a11a0d9234ba8600767f6103f3319 100644 --- a/bt5/erp5_officejs_support_request_ui_test/PathTemplateItem/portal_tests/officejs_support_request_ui_zuite/testSupportRequestModuleAccess.zpt +++ b/bt5/erp5_officejs_support_request_ui_test/PathTemplateItem/portal_tests/officejs_support_request_ui_zuite/testSupportRequestModuleAccess.zpt @@ -32,6 +32,11 @@ <td>//input[@name='field_your_title']</td> <td>test</td> </tr> +<tr> + <td>select</td> + <td>field_your_resource</td> + <td>FeatureRequire</td> +</tr> <tr> <td>click</td> <td>//input[@data-i18n='[value]Proceed']</td> diff --git a/bt5/erp5_officejs_support_request_ui_test/TestTemplateItem/portal_components/test.erp5.testSupportRequest.py b/bt5/erp5_officejs_support_request_ui_test/TestTemplateItem/portal_components/test.erp5.testSupportRequest.py index b2daaaa4bc079535df331f48a1011ffb27dfc0ac..78a48655437c9baef10fbf3594f6929bee2db640 100644 --- a/bt5/erp5_officejs_support_request_ui_test/TestTemplateItem/portal_components/test.erp5.testSupportRequest.py +++ b/bt5/erp5_officejs_support_request_ui_test/TestTemplateItem/portal_components/test.erp5.testSupportRequest.py @@ -98,9 +98,7 @@ class TestSupportRequestCreateNewSupportRequest(SupportRequestTestCase): self.getWebSite().SupportRequestModule_createSupportRequest( description='<b>Help !!!</b>', file=None, - # FIXME: resource passed by the UI should be full relative URL - resource='erp5_officejs_support_request_ui_test_service_001', - # resource=self.portal.service_module.erp5_officejs_support_request_ui_test_service_001.getRelativeUrl(), + resource=self.portal.service_module.erp5_officejs_support_request_ui_test_service_001.getRelativeUrl(), title=self.id(), project='erp5_officejs_support_request_ui_test_project_001', # FIXME: project passed by the UI should be full relative URL @@ -169,9 +167,7 @@ class TestSupportRequestCreateNewSupportRequest(SupportRequestTestCase): self.getWebSite().SupportRequestModule_createSupportRequest( description='<b>Look at this file !</b>', file=FileUpload("the text content"), - # FIXME: resource passed by the UI should be full relative URL - resource='erp5_officejs_support_request_ui_test_service_001', - # resource=self.portal.service_module.erp5_officejs_support_request_ui_test_service_001.getRelativeUrl(), + resource=self.portal.service_module.erp5_officejs_support_request_ui_test_service_001.getRelativeUrl(), title=self.id(), project='erp5_officejs_support_request_ui_test_project_001', # FIXME: project passed by the UI should be full relative URL