From aa7e887decabd24f062a8ccaffe26c509c637a61 Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Tue, 10 Apr 2018 16:19:02 +0200 Subject: [PATCH] misc: use correct content type for menu.json jsonp request (#14684) --- chrono/manager/views.py | 4 +++- tests/test_manager.py | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/chrono/manager/views.py b/chrono/manager/views.py index 87c69b4f..29851f33 100644 --- a/chrono/manager/views.py +++ b/chrono/manager/views.py @@ -785,15 +785,17 @@ desk_import_time_period_exceptions = DeskImportTimePeriodExceptionsView.as_view( def menu_json(request): - response = HttpResponse(content_type='application/json') label = _('Agendas') json_str = json.dumps([{'label': force_text(label), 'slug': 'calendar', 'url': request.build_absolute_uri(reverse('chrono-manager-homepage')) }]) + content_type = 'application/json' for variable in ('jsonpCallback', 'callback'): if variable in request.GET: json_str = '%s(%s);' % (request.GET[variable], json_str) + content_type = 'application/javascript' break + response = HttpResponse(content_type=content_type) response.write(json_str) return response diff --git a/tests/test_manager.py b/tests/test_manager.py index 8da5dc1d..0127253c 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -113,10 +113,12 @@ def test_logout(app, admin_user): def test_menu_json(app, admin_user): app = login(app) resp = app.get('/manage/menu.json', status=200) + assert resp.content_type == 'application/json' assert resp.json[0]['url'] == 'http://testserver/manage/' assert resp.json[0]['label'] == 'Agendas' resp2 = app.get('/manage/menu.json?callback=Q', status=200) assert resp2.text == 'Q(%s);' % resp.text + assert resp2.content_type == 'application/javascript' def test_view_agendas_as_manager(app, manager_user): agenda = Agenda(label=u'Foo Bar')