diff --git a/lti_consumer/lti.py b/lti_consumer/lti.py index d0871bab6dda62af37e4159118044c395398339e..0e2ca632b1d019dd51058451b12113ea9bcafb89 100644 --- a/lti_consumer/lti.py +++ b/lti_consumer/lti.py @@ -152,7 +152,12 @@ class LtiConsumer(object): real_user_object = self.xblock.runtime.get_real_user(self.xblock.runtime.anonymous_student_id) self.xblock.user_email = getattr(real_user_object, "email", "") self.xblock.user_username = getattr(real_user_object, "username", "") - self.xblock.user_language = getattr(getattr(real_user_object, "profile", ""), "language", "") + user_preferences = getattr(real_user_object, "preferences", None) + + if user_preferences is not None: + language_preference = user_preferences.filter(key='pref-lang') + if len(language_preference) == 1: + self.xblock.user_language = language_preference[0].value if self.xblock.ask_to_send_username and self.xblock.user_username: lti_parameters["lis_person_sourcedid"] = self.xblock.user_username diff --git a/lti_consumer/tests/unit/test_lti.py b/lti_consumer/tests/unit/test_lti.py index a7bdb7fa1cdbf187a1aa09ce2d2a8d9a6dd1aa40..48ab03f5f505ffcae71d777503b732f6fe71b07e 100644 --- a/lti_consumer/tests/unit/test_lti.py +++ b/lti_consumer/tests/unit/test_lti.py @@ -181,11 +181,10 @@ class TestLtiConsumer(TestLtiConsumerXBlock): self.lti_consumer.xblock.has_score = True self.lti_consumer.xblock.ask_to_send_username = True self.lti_consumer.xblock.ask_to_send_email = True - self.lti_consumer.xblock.runtime.get_real_user.return_value = Mock( email='edx@example.com', username='edx', - profile=Mock(language='en') + preferences=Mock(filter=Mock(return_value=[Mock(value='en')])) ) self.assertEqual(self.lti_consumer.get_signed_lti_parameters(), expected_lti_parameters) diff --git a/setup.py b/setup.py index a9602acedc335f51a25c4e7378e86dcca184ff35..e6b132906c9556e86629b9405b6e0e30c12d0a95 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ def package_data(pkg, roots): setup( name='lti_consumer-xblock', - version='1.0.7', + version='1.0.9', description='This XBlock implements the consumer side of the LTI specification.', packages=[ 'lti_consumer',