1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-26 15:26:19 +00:00

Fix set lang code bug when user profile is empty.

This commit is contained in:
zhengxie
2015-09-21 16:05:18 +08:00
parent 8fb5cbe5cb
commit 4993e43497
2 changed files with 53 additions and 4 deletions

View File

@@ -1842,10 +1842,15 @@ def i18n(request):
# language code is not supported, use default.
lang = settings.LANGUAGE_CODE
# set language code to user profile
p = Profile.objects.get_profile_by_user(request.user.username)
if p is not None:
p.set_lang_code(lang)
# set language code to user profile if user is logged in
if not request.user.is_anonymous():
p = Profile.objects.get_profile_by_user(request.user.username)
if p is not None:
# update exist record
p.set_lang_code(lang)
else:
# add new record
Profile.objects.add_or_update(request.user.username, '', '', lang)
# set language code to client
res = HttpResponseRedirect(next)

View File

@@ -0,0 +1,44 @@
from django.core.urlresolvers import reverse
from django.http.cookie import parse_cookie
from seahub.test_utils import BaseTestCase
from seahub.profile.models import Profile
class I18nTest(BaseTestCase):
def test_can_set_to_zh(self):
resp = self.client.get(reverse('i18n') + '?lang=zh-cn')
self.assertEqual(302, resp.status_code)
assert parse_cookie(resp.cookies)['django_language'] == 'zh-cn'
def test_wrong_lang_code(self):
resp = self.client.get(reverse('i18n') + '?lang=zh_CN')
self.assertEqual(302, resp.status_code)
assert parse_cookie(resp.cookies)['django_language'] == 'en'
def test_anonymous_user_profile(self):
# Should not add profile record when user is anonymous.
resp = self.client.get(reverse('i18n') + '?lang=zh-cn')
self.assertEqual(302, resp.status_code)
assert len(Profile.objects.all()) == 0
def test_add_new_user_profile(self):
# Should add new profile record.
self.login_as(self.user)
resp = self.client.get(reverse('i18n') + '?lang=zh-cn')
self.assertEqual(302, resp.status_code)
assert len(Profile.objects.all()) == 1
assert Profile.objects.get_user_language(self.user.username) == 'zh-cn'
def test_update_user_profile(self):
# Should update exist profile record.
self.login_as(self.user)
Profile.objects.add_or_update(self.user.username, 'nickname', 'intro')
assert len(Profile.objects.all()) == 1
resp = self.client.get(reverse('i18n') + '?lang=zh-cn')
self.assertEqual(302, resp.status_code)
assert len(Profile.objects.all()) == 1
assert Profile.objects.get_user_language(self.user.username) == 'zh-cn'