From 552572694fc9a44e96007f45b88c8fdcfbde477a Mon Sep 17 00:00:00 2001 From: Julia Hansbrough Date: Tue, 11 Feb 2014 19:19:51 +0000 Subject: [PATCH] Added middleware for handling language changes --- cms/envs/common.py | 1 + common/djangoapps/user_api/middleware.py | 27 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 common/djangoapps/user_api/middleware.py diff --git a/cms/envs/common.py b/cms/envs/common.py index e526914509..23b7de10a5 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -462,6 +462,7 @@ INSTALLED_APPS = ( # User preferences 'user_api', + 'django_openid_auth', ) diff --git a/common/djangoapps/user_api/middleware.py b/common/djangoapps/user_api/middleware.py new file mode 100644 index 0000000000..77c885e125 --- /dev/null +++ b/common/djangoapps/user_api/middleware.py @@ -0,0 +1,27 @@ +""" +Middleware for UserPreferences +""" + +from django.utils.translation.trans_real import parse_accept_lang_header + +from user_api.models import UserPreference, LANGUAGE_KEY + + +class UserPreferenceMiddleware(object): + """ + Middleware for user preferences. + + Ensures that, once set, a user's preferences are reflected in the page + whenever they are logged in. + """ + + def process_request(self, request): + """ + If a user's UserPreference contains a language preference, + stick that preference in the session. + """ + + query = UserPreference.objects.filter(user=request.user, key=LANGUAGE_KEY) + if query.exists(): + # there should only be one result for query + request.session['django_language'] = query[0].value