Commit 8e991575 authored by Boxiang Sun's avatar Boxiang Sun

erp5_hal_json_style: Return 404 error if no view was found in the instance

parent 2af448ce
......@@ -1445,7 +1445,11 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
view_context = traversed_document
else:
view_context = traversed_document.restrictedTraverse(current_action['other_context'])
view_instance = getattr(view_context, current_action['view_id'])
view_instance = getattr(view_context, current_action['view_id'], None)
if view_instance is None:
response.setStatus(404)
return ""
if (view_instance is not None):
embedded_dict = {
'_links': {
......
......@@ -708,6 +708,17 @@ class TestERP5Document_getHateoas_mode_traverse(ERP5HALJSONStyleSkinsMixin):
document.getRelativeUrl()))
self.assertEqual(result_dict['_embedded']['_view']['_actions']['put']['method'], 'POST')
@simulate('Base_getRequestUrl', '*args, **kwargs',
'return "http://example.org/bar"')
@simulate('Base_getRequestHeader', '*args, **kwargs',
'return "application/hal+json"')
@changeSkin('Hal')
def test_getHateoasDocument_non_existing_action(self):
document = self._makeDocument()
fake_request = do_fake_request("GET")
result = self.portal.web_site_module.hateoas.ERP5Document_getHateoas(REQUEST=fake_request, mode="traverse", relative_url=document.getRelativeUrl(), view="not_existing_action")
self.assertEquals(fake_request.RESPONSE.status, 404)
@simulate('Base_getRequestUrl', '*args, **kwargs',
'return "http://example.org/bar"')
@simulate('Base_getRequestHeader', '*args, **kwargs',
......
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