Commit 251bc0b4 authored by Michal Čihař's avatar Michal Čihař

Migrate get_user_display to new avatar handling

Use server side cached avatars

Issue #412
Signed-off-by: default avatarMichal Čihař <michal@cihar.com>
parent bdb4fe71
......@@ -23,7 +23,10 @@ import urllib
import hashlib
import os.path
from django.core.cache import get_cache, InvalidCacheBackendError
from django.conf import settings
from django.utils.html import escape
from django.utils.safestring import mark_safe
from django.utils.translation import pgettext
from django.core.urlresolvers import reverse
import weblate
from weblate import appsettings
......@@ -130,3 +133,44 @@ def download_avatar_image(user, size):
# Read and possibly convert response
return handle.read()
def get_user_display(user, icon=True, link=False):
'''
Nicely formats user for display.
'''
# Did we get any user?
if user is None:
# None user, probably remotely triggered action
full_name = pgettext('No known user', 'None')
else:
# Get full name
full_name = user.first_name
# Use user name if full name is empty
if full_name.strip() == '':
full_name = user.username
# Escape HTML
full_name = escape(full_name)
# Icon requested?
if icon and appsettings.ENABLE_AVATARS:
if user is None:
avatar = 'TODO'
else:
avatar = reverse(
'user_avatar', kwargs={'user': user.username, 'size': 32}
)
full_name = '<img src="%(avatar)s" class="avatar" /> %(name)s' % {
'name': full_name,
'avatar': avatar
}
if link and user is not None:
return mark_safe('<a href="%(link)s">%(name)s</a>' % {
'name': full_name,
'link': reverse('user_page', kwargs={'user': user.username}),
})
else:
return mark_safe(full_name)
......@@ -38,9 +38,8 @@ from social.apps.django_app.default.models import UserSocialAuth
from weblate.lang.models import Language
from weblate.trans.models import Project, Change
from weblate.trans.util import (
get_user_display, get_site_url, get_distinct_translations
)
from weblate.trans.util import get_site_url, get_distinct_translations
from weblate.accounts.avatar import get_user_display
import weblate
from weblate.appsettings import ANONYMOUS_USER_NAME
......
......@@ -26,7 +26,7 @@ from django.utils import timezone
from weblate.trans.models.unit import Unit
from weblate.trans.models.translation import Translation
from weblate.trans.models.dictionary import Dictionary
from weblate.trans.util import get_user_display
from weblate.accounts.avatar import get_user_display
class ChangeManager(models.Manager):
......
......@@ -41,8 +41,9 @@ from weblate.trans.checks import CHECKS
from weblate.trans.models.subproject import SubProject
from weblate.trans.models.project import Project
from weblate.trans.util import (
get_user_display, get_site_url, sleep_while_git_locked, translation_percent
get_site_url, sleep_while_git_locked, translation_percent
)
from weblate.accounts.avatar import get_user_display
from weblate.trans.mixins import URLMixin, PercentMixin
from weblate.trans.boolean_sum import BooleanSum
......
......@@ -26,7 +26,7 @@ from weblate.trans.checks import CHECKS
from weblate.trans.models.unit import Unit
from weblate.trans.models.project import Project
from weblate.trans.models.changes import Change
from weblate.trans.util import get_user_display
from weblate.accounts.avatar import get_user_display
class RelatedUnitMixin(object):
......
......@@ -37,8 +37,9 @@ import weblate
from weblate.trans.simplediff import html_diff
from weblate.trans.util import (
split_plural, avatar_for_email, get_user_display
split_plural, avatar_for_email,
)
from weblate.accounts.avatar import get_user_display
from weblate.lang.models import Language
from weblate.trans.models import Project, SubProject, Dictionary, Advertisement
from weblate.trans.checks import CHECKS
......
......@@ -21,11 +21,8 @@
import hashlib
from django.core.exceptions import ImproperlyConfigured
from django.contrib.sites.models import Site
from django.utils.translation import pgettext
from django.core.cache import cache
from django.utils.html import escape
from django.utils.safestring import mark_safe
from django.core.urlresolvers import reverse
from django.conf import settings
from importlib import import_module
import urllib
......@@ -96,49 +93,6 @@ def avatar_for_email(email, size=80):
return escape(url)
def get_user_display(user, icon=True, link=False):
'''
Nicely formats user for display.
'''
from weblate.appsettings import ENABLE_AVATARS
# Did we get any user?
if user is None:
# None user, probably remotely triggered action
full_name = pgettext('No known user', 'None')
email = ''
else:
# Get full name
full_name = user.first_name
# Use user name if full name is empty
if full_name.strip() == '':
full_name = user.username
email = user.email
# Escape HTML
full_name = escape(full_name)
# Icon requested?
if icon and ENABLE_AVATARS:
# Get avatar image
avatar = avatar_for_email(email, size=32)
full_name = '<img src="%(avatar)s" class="avatar" /> %(name)s' % {
'name': full_name,
'avatar': avatar
}
if link and user is not None:
return mark_safe('<a href="%(link)s">%(name)s</a>' % {
'name': full_name,
'link': reverse('user_page', kwargs={'user': user.username}),
})
else:
return mark_safe(full_name)
def is_plural(text):
'''
Checks whether string is plural form.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment