mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-18 15:08:22 +00:00
Merge pull request #1029 from haiwen/5.0-email2nickname
[seahub tags] Handle empty nickname in email2nickname
This commit is contained in:
commit
eb0f749b82
@ -356,20 +356,24 @@ def translate_seahub_time_str(val):
|
|||||||
@register.filter(name='email2nickname')
|
@register.filter(name='email2nickname')
|
||||||
def email2nickname(value):
|
def email2nickname(value):
|
||||||
"""
|
"""
|
||||||
Return nickname or short email.
|
Return nickname if it exists and it's not an empty string,
|
||||||
|
otherwise return short email.
|
||||||
"""
|
"""
|
||||||
if not value:
|
if not value:
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
key = normalize_cache_key(value, NICKNAME_CACHE_PREFIX)
|
key = normalize_cache_key(value, NICKNAME_CACHE_PREFIX)
|
||||||
nickname = cache.get(key)
|
cached_nickname = cache.get(key)
|
||||||
if not nickname:
|
if cached_nickname and cached_nickname.strip():
|
||||||
profile = get_first_object_or_none(Profile.objects.filter(user=value))
|
return cached_nickname.strip()
|
||||||
if profile is not None and profile.nickname:
|
|
||||||
nickname = profile.nickname
|
profile = get_first_object_or_none(Profile.objects.filter(user=value))
|
||||||
else:
|
if profile is not None and profile.nickname and profile.nickname.strip():
|
||||||
nickname = value.split('@')[0]
|
nickname = profile.nickname.strip()
|
||||||
cache.set(key, nickname, NICKNAME_CACHE_TIMEOUT)
|
else:
|
||||||
|
nickname = value.split('@')[0]
|
||||||
|
|
||||||
|
cache.set(key, nickname, NICKNAME_CACHE_TIMEOUT)
|
||||||
return nickname
|
return nickname
|
||||||
|
|
||||||
@register.filter(name='email2id')
|
@register.filter(name='email2id')
|
||||||
|
32
tests/seahub/base/templatetags/test_seahub_tags.py
Normal file
32
tests/seahub/base/templatetags/test_seahub_tags.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
from seahub.test_utils import BaseTestCase
|
||||||
|
|
||||||
|
from seahub.base.templatetags.seahub_tags import email2nickname
|
||||||
|
from seahub.profile.models import Profile
|
||||||
|
|
||||||
|
|
||||||
|
class Email2nicknameTest(BaseTestCase):
|
||||||
|
def test_profile_is_none(self):
|
||||||
|
assert len(Profile.objects.all()) == 0
|
||||||
|
|
||||||
|
assert email2nickname(self.user.username) == self.user.username.split('@')[0]
|
||||||
|
|
||||||
|
def test_nickname_is_empty_string(self):
|
||||||
|
Profile.objects.add_or_update(self.user.username, '')
|
||||||
|
assert len(Profile.objects.all()) == 1
|
||||||
|
assert Profile.objects.all()[0].nickname == ''
|
||||||
|
|
||||||
|
assert email2nickname(self.user.username) == self.user.username.split('@')[0]
|
||||||
|
|
||||||
|
def test_nickname_is_space(self):
|
||||||
|
Profile.objects.add_or_update(self.user.username, ' ')
|
||||||
|
assert len(Profile.objects.all()) == 1
|
||||||
|
assert Profile.objects.all()[0].nickname == ' '
|
||||||
|
|
||||||
|
assert email2nickname(self.user.username) == self.user.username.split('@')[0]
|
||||||
|
|
||||||
|
def test_nickname_contains_space(self):
|
||||||
|
Profile.objects.add_or_update(self.user.username, ' foo bar ')
|
||||||
|
assert len(Profile.objects.all()) == 1
|
||||||
|
assert Profile.objects.all()[0].nickname == ' foo bar '
|
||||||
|
|
||||||
|
assert email2nickname(self.user.username) == 'foo bar'
|
Loading…
Reference in New Issue
Block a user