changeset 5892:7a7b817aa156

helpers: cleanup of gravatar handling
author Mads Kiilerich <madski@unity3d.com>
date Wed, 04 May 2016 01:18:25 +0200
parents 9a5cf82c1ea8
children 8d01c8a72bb5
files kallithea/lib/helpers.py kallithea/public/js/base.js
diffstat 2 files changed, 32 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/lib/helpers.py	Wed May 04 01:18:25 2016 +0200
+++ b/kallithea/lib/helpers.py	Wed May 04 01:18:25 2016 +0200
@@ -839,7 +839,7 @@
 #==============================================================================
 # GRAVATAR URL
 #==============================================================================
-def gravatar(email_address, cls='', size=30, ssl_enabled=True):
+def gravatar(email_address, cls='', size=30):
     """return html element of the gravatar
 
     This method will return an <img> with the resolution double the size (for
@@ -847,44 +847,42 @@
     empty then we fallback to using an icon.
 
     """
-    src = gravatar_url(email_address, size*2, ssl_enabled)
+    src = gravatar_url(email_address, size * 2)
 
-    #  here it makes sense to use style="width: ..." (instead of, say, a
-    # stylesheet) because we using this to generate a high-res (retina) size
-    tmpl = '<img alt="" class="{cls}" style="width: {size}px; height: {size}px" src="{src}"/>'
+    if src:
+        # here it makes sense to use style="width: ..." (instead of, say, a
+        # stylesheet) because we using this to generate a high-res (retina) size
+        html = ('<img alt="" class="{cls}" style="width: {size}px; height: {size}px" src="{src}"/>'
+            .format(cls=cls, size=size, src=src))
 
-    # if src is empty then there was no gravatar, so we use a font icon
-    if not src:
-        tmpl = """<i class="icon-user {cls}" style="font-size: {size}px;"></i>"""
+    else:
+        # if src is empty then there was no gravatar, so we use a font icon
+        html = ("""<i class="icon-user {cls}" style="font-size: {size}px;"></i>"""
+            .format(cls=cls, size=size, src=src))
 
-    tmpl = tmpl.format(cls=cls, size=size, src=src)
-    return literal(tmpl)
+    return literal(html)
 
-def gravatar_url(email_address, size=30, ssl_enabled=True):
+def gravatar_url(email_address, size=30):
     # doh, we need to re-import those to mock it later
     from pylons import url
     from pylons import tmpl_context as c
+    if not c.visual.use_gravatar:
+        return ""
 
     _def = 'anonymous@kallithea-scm.org'  # default gravatar
-    _use_gravatar = c.visual.use_gravatar
-    _gravatar_url = c.visual.gravatar_url or User.DEFAULT_GRAVATAR_URL
-
     email_address = email_address or _def
 
-    if not _use_gravatar or not email_address or email_address == _def:
+    if email_address == _def:
         return ""
 
-    if _use_gravatar:
-        _md5 = lambda s: hashlib.md5(s).hexdigest()
-
-        tmpl = _gravatar_url
-        parsed_url = urlparse.urlparse(url.current(qualified=True))
-        tmpl = tmpl.replace('{email}', email_address) \
-                   .replace('{md5email}', _md5(safe_str(email_address).lower())) \
-                   .replace('{netloc}', parsed_url.netloc) \
-                   .replace('{scheme}', parsed_url.scheme) \
-                   .replace('{size}', safe_str(size))
-        return tmpl
+    parsed_url = urlparse.urlparse(url.current(qualified=True))
+    url = (c.visual.gravatar_url or User.DEFAULT_GRAVATAR_URL ) \
+               .replace('{email}', email_address) \
+               .replace('{md5email}', hashlib.md5(safe_str(email_address).lower()).hexdigest()) \
+               .replace('{netloc}', parsed_url.netloc) \
+               .replace('{scheme}', parsed_url.scheme) \
+               .replace('{size}', safe_str(size))
+    return url
 
 class Page(_Page):
     """
--- a/kallithea/public/js/base.js	Wed May 04 01:18:25 2016 +0200
+++ b/kallithea/public/js/base.js	Wed May 04 01:18:25 2016 +0200
@@ -1076,18 +1076,19 @@
         + "</span>" + full.substring(matchindex + snippet.length);
 };
 
-var gravatar = function(link, size, cssclass) {
-    var elem = '<img alt="" class="{2}" style="width: {0}px; height: {0}px" src="{1}"/>'.format(size, link, cssclass);
-    if (!link) {
-        elem = '<i class="icon-user {1}" style="font-size: {0}px;"></i>'.format(size, cssclass);
+var gravatar = function(gravatar_lnk, size, cssclass) {
+    if (!gravatar_lnk) {
+        return '<i class="icon-user {1}" style="font-size: {0}px;"></i>'.format(size, cssclass);
     }
-    return elem;
+    return '<img alt="" class="{2}" style="width: {0}px; height: {0}px" src="{1}"/>'.format(size, gravatar_lnk, cssclass);
 }
 
-var autocompleteGravatar = function(res, link, size, group) {
-    var elem = gravatar(link, size, "perm-gravatar-ac");
+var autocompleteGravatar = function(res, gravatar_lnk, size, group) {
+    var elem;
     if (group !== undefined) {
         elem = '<i class="perm-gravatar-ac icon-users"></i>';
+    } else {
+        elem = gravatar(gravatar_lnk, size, "perm-gravatar-ac");
     }
     return '<div class="ac-container-wrap">{0}{1}</div>'.format(elem, res);
 }