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:
@@ -1842,10 +1842,15 @@ def i18n(request):
|
|||||||
# language code is not supported, use default.
|
# language code is not supported, use default.
|
||||||
lang = settings.LANGUAGE_CODE
|
lang = settings.LANGUAGE_CODE
|
||||||
|
|
||||||
# set language code to user profile
|
# set language code to user profile if user is logged in
|
||||||
p = Profile.objects.get_profile_by_user(request.user.username)
|
if not request.user.is_anonymous():
|
||||||
if p is not None:
|
p = Profile.objects.get_profile_by_user(request.user.username)
|
||||||
p.set_lang_code(lang)
|
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
|
# set language code to client
|
||||||
res = HttpResponseRedirect(next)
|
res = HttpResponseRedirect(next)
|
||||||
|
44
tests/seahub/views/test_i18n.py
Normal file
44
tests/seahub/views/test_i18n.py
Normal 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'
|
Reference in New Issue
Block a user