import PIL
import io
-import hashlib
import ldap
import logging
import urllib.parse
return url
- gravatar_icon = avatar_url
-
def get_avatar(self, size=None):
avatar = self._get_first_attribute("jpegPhoto")
if not avatar:
return f.getvalue()
- def get_gravatar_url(self, size=128):
- try:
- gravatar_email = self.email.lower()
- except:
- gravatar_email = "nobody@ipfire.org"
-
- # construct the url
- gravatar_url = "https://www.gravatar.com/avatar/" + \
- hashlib.md5(gravatar_email).hexdigest() + "?"
- gravatar_url += urllib.parse.urlencode({'d': "mm", 's': str(size)})
-
- return gravatar_url
-
if __name__ == "__main__":
a = Accounts()
{% block right %}
<div class="col-md-3 text-center">
- <img class="img-fluid rounded-circle mb-4" src="{{ author.gravatar_icon(160) }}" alt="{{ author.name }}" />
+ <img class="img-fluid rounded-circle mb-4" src="{{ author.avatar_url(160) }}" alt="{{ author.name }}" />
<p>{{ author.name }}</p>
{% if entry.account %}
<dt>{{ _("Uploaded by") }}</dt>
<dd>
- <img src="{{ entry.account.gravatar_icon(14) }}" alt="{{ entry.account.name }}">
+ <img src="{{ entry.account.avatar_url(14) }}" alt="{{ entry.account.name }}">
{{ entry.account.name }}
</dd>
{% elif current_user and entry.address %}
</div>
<div class="col-md-3 text-center">
- <img class="img-fluid rounded-circle mb-4" src="{{ current_user.gravatar_icon(160) }}" alt="{{ current_user }}" />
+ <img class="img-fluid rounded-circle mb-4" src="{{ current_user.avatar_url(160) }}" alt="{{ current_user }}" />
<p>{{ current_user.name }}</p>
{% for p in [p for p in conf.invitees if not current_user == p] %}
<li>
<a href="/conferences/{{ conf.sip_id }}/invite/{{ p.sip_id }}">
- <img src="{{ p.gravatar_icon(13) }}" alt="{{ p.name }}"> {{ p.name }}
+ <img src="{{ p.avatar_url(13) }}" alt="{{ p.name }}"> {{ p.name }}
</a>
</li>
{% end %}
{% for p in conf.participants %}
<li>
{% if p.caller_account %}
- <img src="{{ p.caller_account.gravatar_icon(32) }}" alt="{{ p.caller_account.name }}" class="img-thumbnail">
+ <img src="{{ p.caller_account.avatar_url(32) }}" alt="{{ p.caller_account.name }}" class="img-thumbnail">
<a href="/phonebook/{{ p.caller_account.uid }}">{{ p.caller_account.name }}</a>
{% else %}
{{ p.caller }}
<div class="row mb-6">
<div class="col-3">
- <img src="{{ account.gravatar_icon(243) }}" alt="{{ account.name }}" class="img-thumbnail">
+ <img src="{{ account.avatar_url(243) }}" alt="{{ account.name }}" class="img-thumbnail">
</div>
<div class="col">
{% if account.sip_id %}
<th scope="col">Name</th>
<th scope="col">eMail</th>
<th scope="col">Phone</th>
- <th scope="col">Gravatar</th>
+ <th scope="col">Avatar</th>
</tr>
</thead>
<tbody>
{% end %}
{% end %}
</td>
- <td><a href="/phonebook/{{ e.uid }}"><img src="{{ e.gravatar_icon(64) }}" alt="{{ e.name }}"></a></td>
+ <td><a href="/phonebook/{{ e.uid }}"><img src="{{ e.avatar_url(64) }}" alt="{{ e.name }}"></a></td>
</tr>
{% end %}
</tbody>
if avatar:
self.memcached.set(cache_handle, avatar, 6 * 3600)
- # Otherwise redirect to gravatar
+ # Otherwise raise 404 (XXX should send a default image)
else:
- avatar = account.get_gravatar_url(size)
-
- if avatar.startswith("http://") or avatar.startswith("https://"):
- return self.redirect(avatar)
+ raise tornado.web.HTTPError(404, "No avatar set for %s" % account)
self.set_header("Cache-Control", "public,max-age=300")
self.set_header("Content-Disposition", "inline; filename=\"%s.jpg\"" % who)