From b3e7516af7fcb997e56425cd114de06ee3c52de8 Mon Sep 17 00:00:00 2001 From: Syed Hassan Raza Date: Mon, 10 Nov 2014 07:08:04 +0000 Subject: [PATCH 1/2] Handle Unicode for Incoming Keys --- common/lib/xmodule/xmodule/video_module/video_handlers.py | 4 +++- lms/djangoapps/courseware/tests/test_video_handlers.py | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/common/lib/xmodule/xmodule/video_module/video_handlers.py b/common/lib/xmodule/xmodule/video_module/video_handlers.py index 27e81a3ad9..41d93e5dbc 100644 --- a/common/lib/xmodule/xmodule/video_module/video_handlers.py +++ b/common/lib/xmodule/xmodule/video_module/video_handlers.py @@ -55,7 +55,9 @@ class VideoStudentViewHandlers(object): if dispatch == 'save_user_state': for key in data: - if hasattr(self, key) and key in accepted_keys: + if type(key) == str: + key = unicode(key, "UTF8") + if hasattr(self, key.encode('utf8')) and key in accepted_keys: if key in conversions: value = conversions[key](data[key]) else: diff --git a/lms/djangoapps/courseware/tests/test_video_handlers.py b/lms/djangoapps/courseware/tests/test_video_handlers.py index 8fee82ed05..2e92563674 100644 --- a/lms/djangoapps/courseware/tests/test_video_handlers.py +++ b/lms/djangoapps/courseware/tests/test_video_handlers.py @@ -131,6 +131,7 @@ class TestVideo(BaseTestXmodule): {'speed': 2.0}, {'saved_video_position': "00:00:10"}, {'transcript_language': 'uk'}, + {'demoo�': 'sample'} ] for sample in data: response = self.clients[self.users[0].username].post( @@ -152,6 +153,10 @@ class TestVideo(BaseTestXmodule): self.item_descriptor.handle_ajax('save_user_state', {'transcript_language': "uk"}) self.assertEqual(self.item_descriptor.transcript_language, 'uk') + response = self.item_descriptor.handle_ajax('save_user_state', {'demoo�': "sample"}) + self.assertEqual(json.loads(response)['success'], True) + + def tearDown(self): _clear_assets(self.item_descriptor.location) From eec19992084eae2caae68289201f1da6b764fe45 Mon Sep 17 00:00:00 2001 From: Syed Hassan Raza Date: Tue, 25 Nov 2014 10:39:08 +0000 Subject: [PATCH 2/2] Handle unicode through try catch --- common/lib/xmodule/xmodule/video_module/video_handlers.py | 4 +--- lms/djangoapps/courseware/tests/test_video_handlers.py | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/common/lib/xmodule/xmodule/video_module/video_handlers.py b/common/lib/xmodule/xmodule/video_module/video_handlers.py index 41d93e5dbc..7770c9d0c0 100644 --- a/common/lib/xmodule/xmodule/video_module/video_handlers.py +++ b/common/lib/xmodule/xmodule/video_module/video_handlers.py @@ -55,9 +55,7 @@ class VideoStudentViewHandlers(object): if dispatch == 'save_user_state': for key in data: - if type(key) == str: - key = unicode(key, "UTF8") - if hasattr(self, key.encode('utf8')) and key in accepted_keys: + if key in accepted_keys: if key in conversions: value = conversions[key](data[key]) else: diff --git a/lms/djangoapps/courseware/tests/test_video_handlers.py b/lms/djangoapps/courseware/tests/test_video_handlers.py index 2e92563674..5c3572417b 100644 --- a/lms/djangoapps/courseware/tests/test_video_handlers.py +++ b/lms/djangoapps/courseware/tests/test_video_handlers.py @@ -153,7 +153,7 @@ class TestVideo(BaseTestXmodule): self.item_descriptor.handle_ajax('save_user_state', {'transcript_language': "uk"}) self.assertEqual(self.item_descriptor.transcript_language, 'uk') - response = self.item_descriptor.handle_ajax('save_user_state', {'demoo�': "sample"}) + response = self.item_descriptor.handle_ajax('save_user_state', {u'demoo�': "sample"}) self.assertEqual(json.loads(response)['success'], True)