From bff8c08245b827dd4b139712fea510af43f89d1b Mon Sep 17 00:00:00 2001 From: Troy Sankey Date: Tue, 14 Nov 2017 16:36:39 -0500 Subject: [PATCH] Avoid a django breaking change: set_language response code In Django 1.10+, the set_language view (/i18n/setlang) will respond to Ajax requests which do not contain a "next" parameter with status 204 No Content instead of 304. This commit adds the "next" parameter to the request in order to ensure that upgrading to Django 1.10+ will not cause the set_language view to change behavior. PLAT-1353 --- .../student_account/account_settings_fields_spec.js | 12 ++++++++++-- .../student_account/views/account_settings_fields.js | 3 ++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lms/static/js/spec/student_account/account_settings_fields_spec.js b/lms/static/js/spec/student_account/account_settings_fields_spec.js index d9b1110b28..43ac93854a 100644 --- a/lms/static/js/spec/student_account/account_settings_fields_spec.js +++ b/lms/static/js/spec/student_account/account_settings_fields_spec.js @@ -142,8 +142,13 @@ define(['backbone', requests, 'POST', '/i18n/setlang/', - 'language=' + data[fieldData.valueAttribute] + $.param({ + language: data[fieldData.valueAttribute], + next: window.location.href + }) ); + // Django will actually respond with a 302 redirect, but that would cause a page load during these + // unittests. 204 should work fine for testing. AjaxHelpers.respondWithNoContent(requests); FieldViewsSpecHelpers.expectMessageContains(view, 'Your changes have been saved.'); @@ -157,7 +162,10 @@ define(['backbone', requests, 'POST', '/i18n/setlang/', - 'language=' + data[fieldData.valueAttribute] + $.param({ + language: data[fieldData.valueAttribute], + next: window.location.href + }) ); AjaxHelpers.respondWithError(requests, 500); FieldViewsSpecHelpers.expectMessageContains( diff --git a/lms/static/js/student_account/views/account_settings_fields.js b/lms/static/js/student_account/views/account_settings_fields.js index 77123c66fd..7c83235692 100644 --- a/lms/static/js/student_account/views/account_settings_fields.js +++ b/lms/static/js/student_account/views/account_settings_fields.js @@ -52,7 +52,8 @@ fieldTemplate: field_dropdown_account_template, saveSucceeded: function() { var data = { - language: this.modelValue() + language: this.modelValue(), + next: window.location.href }; var view = this;