From 05e776f9196df23f733eb2e53065ca6a47a8b1e9 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Sat, 19 May 2018 16:05:39 +0200 Subject: [PATCH] api: return formdata URLs in ApiFormdefDirectory.submit() (#23939) So that we do not need another roundtrip to have those informations. --- tests/test_api.py | 3 +++ wcs/api.py | 10 +++++++++- wcs/formdata.py | 3 +++ wcs/formdef.py | 4 ++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/tests/test_api.py b/tests/test_api.py index ae386803..d1064c8b 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -535,6 +535,9 @@ def test_formdef_submit(pub, local_user): return signed_url[len('http://example.net'):] resp = get_app(pub).post_json(url(), {'data': {}}) assert resp.json['err'] == 0 + assert resp.json['data']['url'] == ('http://example.net/test/%s/' % resp.json['data']['id']) + assert resp.json['data']['backoffice_url'] == ('http://example.net/backoffice/management/test/%s/' % resp.json['data']['id']) + assert resp.json['data']['api_url'] == ('http://example.net/api/forms/test/%s/' % resp.json['data']['id']) assert data_class.get(resp.json['data']['id']).status == 'wf-new' assert data_class.get(resp.json['data']['id']).user_id == str(local_user.id) assert data_class.get(resp.json['data']['id']).tracking_code is None diff --git a/wcs/api.py b/wcs/api.py index 894a8b0c..5453b85e 100644 --- a/wcs/api.py +++ b/wcs/api.py @@ -334,7 +334,15 @@ class ApiFormdefDirectory(Directory): formdata.store() formdata.perform_workflow() formdata.store() - return json.dumps({'err': 0, 'data': {'id': formdata.id}}) + return json.dumps({ + 'err': 0, + 'data': { + 'id': formdata.id, + 'url': formdata.get_url(), + 'backoffice_url': formdata.get_url(backoffice=True), + 'api_url': formdata.get_api_url(), + } + }) class ApiFormdefsDirectory(Directory): diff --git a/wcs/formdata.py b/wcs/formdata.py index f11661c4..8da7d310 100644 --- a/wcs/formdata.py +++ b/wcs/formdata.py @@ -580,6 +580,9 @@ class FormData(StorableObject): def get_url(self, backoffice = False): return '%s%s/' % (self.formdef.get_url(backoffice=backoffice), self.id) + def get_api_url(self): + return '%s%s/' % (self.formdef.get_api_url(), self.id) + def get_display_id(self): return str(self.id_display or self.id) diff --git a/wcs/formdef.py b/wcs/formdef.py index 0e894a9c..b33dc30f 100644 --- a/wcs/formdef.py +++ b/wcs/formdef.py @@ -520,6 +520,10 @@ class FormDef(StorableObject): base_url = get_publisher().get_frontoffice_url() return '%s/%s/' % (base_url, self.url_name) + def get_api_url(self): + base_url = get_publisher().get_frontoffice_url() + return '%s/api/forms/%s/' % (base_url, self.url_name) + def get_display_id_format(self): return '[formdef_id]-[form_number_raw]' -- 2.17.0