Skip to content

Commit

Permalink
fixes #1630 by translating success message with new selected language
Browse files Browse the repository at this point in the history
  • Loading branch information
laura-barluzzi committed Aug 18, 2017
1 parent 854e479 commit 982d774
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 1 deletion.
14 changes: 14 additions & 0 deletions cadasta/accounts/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,17 @@ def process_request(self, request):
translation.activate(user_language)
request.session[translation.LANGUAGE_SESSION_KEY] = user_language
return None

def process_response(self, request, response):
if not request.user.is_authenticated:
return response

user_language = request.user.language
current_language = translation.get_language()
if user_language == current_language:
return response

translation.activate(user_language)
request.session[translation.LANGUAGE_SESSION_KEY] = user_language

return response
30 changes: 30 additions & 0 deletions cadasta/accounts/tests/test_middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ class UserLanguageMiddlewareTest(TestCase):

def setUp(self):
self.mock_request = Mock()
self.mock_response = Mock()
self.LANGUAGE_SESSION_KEY = ''
self.mock_request.session = {self.LANGUAGE_SESSION_KEY: ''}
self.ulm = middleware.UserLanguageMiddleware()
Expand Down Expand Up @@ -39,3 +40,32 @@ def test_process_request_activate_user_language(self, mock_translation):
assert 1 == mock_translation.activate.call_count
assert 'fr' == session_lang[self.LANGUAGE_SESSION_KEY]
assert response is None

@patch.object(middleware, 'translation')
def test_process_response_user_not_authenticated(self, mock_translation):
self.mock_request.user.is_authenticated = False
res = self.ulm.process_response(self.mock_request, self.mock_response)
assert 0 == mock_translation.activate.call_count
assert res is self.mock_response

@patch.object(middleware, 'translation')
def test_process_response_with_same_language(self, mock_translation):
self.mock_request.user.is_authenticated = True
self.mock_request.user.language = 'en'
mock_translation.get_language.return_value = 'en'
res = self.ulm.process_response(self.mock_request, self.mock_response)
assert 0 == mock_translation.activate.call_count
assert res is self.mock_response

@patch.object(middleware, 'translation')
def test_process_response_activate_user_language(self, mock_translation):
self.mock_request.user.is_authenticated = True
self.mock_request.user.language = 'fr'
mock_translation.get_language.return_value = 'en'
user_lang = self.mock_request.user.language
session_lang = self.mock_request.session
session_lang[self.LANGUAGE_SESSION_KEY] = user_lang
res = self.ulm.process_response(self.mock_request, self.mock_response)
assert 1 == mock_translation.activate.call_count
assert 'fr' == session_lang[self.LANGUAGE_SESSION_KEY]
assert res is self.mock_response
2 changes: 1 addition & 1 deletion cadasta/accounts/views/default.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django.core.urlresolvers import reverse_lazy
from django.utils.translation import ugettext as _
from django.utils.translation import ugettext_lazy as _
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
from django.utils import timezone
Expand Down

0 comments on commit 982d774

Please sign in to comment.