From 1a2b162de2305f51e705cf8e5f44748949e181ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 23 Jan 2018 14:22:58 +0100 Subject: [PATCH] misc: adapt to w.c.s. API changes (#21367) --- welco/contacts/views.py | 2 +- welco/utils.py | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/welco/contacts/views.py b/welco/contacts/views.py index b1e340d..d173c3c 100644 --- a/welco/contacts/views.py +++ b/welco/contacts/views.py @@ -104,7 +104,7 @@ class ContactDetailFragmentView(TemplateView): user_id = self.kwargs.get('slug').split('-')[-1] user_details = get_wcs_data('api/users/%s/' % user_id) context.update(user_details) - context['forms'] = get_wcs_data('api/users/%s/forms' % user_id) + context['forms'] = get_wcs_data('api/users/%s/forms' % user_id).get('data') or [] context['user_id'] = user_id if 'source_pk' in self.request.GET: diff --git a/welco/utils.py b/welco/utils.py index a4fc0f3..f4cdbee 100644 --- a/welco/utils.py +++ b/welco/utils.py @@ -68,6 +68,8 @@ def get_wcs_json(wcs_url, path, wcs_site): signed_url = sign_url(url + '?orig=%s' % wcs_site.get('orig'), wcs_site.get('secret')) response_json = requests.get(signed_url, headers={'accept': 'application/json'}, timeout=10).json() + if not isinstance(json_response, dict): + json_response = {'data': json_response} cache.set(url, response_json) return response_json @@ -101,7 +103,7 @@ def get_wcs_formdef_details(formdef_reference): wcs_key, form_slug = formdef_reference.split(':') wcs_site = get_wcs_services()[wcs_key] forms_response_json = get_wcs_json(wcs_site.get('url'), 'json', wcs_site) - for form in forms_response_json: + for form in forms_response_json.get('data') or []: slug = form.get('slug') if slug == form_slug: return form @@ -161,7 +163,10 @@ def get_wcs_data(endpoint, params=None): response = requests.get(url) response.raise_for_status() - return response.json() + json_response = response.json() + if not isinstance(json_response, dict): + json_response = {'data': json_response} + return json_response def response_for_json(request, data): json_str = json.dumps(data)