From bcbfe226ee44486859734cafe345d6d30ef31d84 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Tue, 16 Jan 2018 16:06:50 +0000 Subject: [PATCH] Allow disabling gravatar with WAGTAIL_GRAVATAR_PROVIDER_URL=None. Fixes #1286 --- docs/advanced_topics/settings.rst | 2 +- wagtail/users/utils.py | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/advanced_topics/settings.rst b/docs/advanced_topics/settings.rst index 22f04f3938..fb0674b2ac 100644 --- a/docs/advanced_topics/settings.rst +++ b/docs/advanced_topics/settings.rst @@ -235,7 +235,7 @@ Allows the default ``LoginForm`` to be extended with extra fields. WAGTAIL_GRAVATAR_PROVIDER_URL = '//www.gravatar.com/avatar' -Allows to set your own Gravatar-like URL or alternatives like robohash.org +If a user has not uploaded a profile picture, Wagtail will look for an avatar linked to their email address on gravatar.com. This setting allows you to specify an alternative provider such as like robohash.org, or can be set to ``None`` to disable the use of remote avatars completely. Images diff --git a/wagtail/users/utils.py b/wagtail/users/utils.py index b88fdb7afd..3cbafbff50 100644 --- a/wagtail/users/utils.py +++ b/wagtail/users/utils.py @@ -1,5 +1,6 @@ import hashlib from django.conf import settings +from django.contrib.staticfiles.templatetags.staticfiles import static from django.utils.http import urlencode from wagtail.core.compat import AUTH_USER_APP_LABEL, AUTH_USER_MODEL_NAME @@ -25,10 +26,13 @@ def user_can_delete_user(current_user, user_to_delete): def get_gravatar_url(email, size=50): default = "mm" size = int(size) * 2 # requested at retina size by default and scaled down at point of use with css - gravatar_provider_url = getattr(settings, 'WAGTAIL_GRAVATAR_PROVIDER_URL', '//www.gravatar.com/avatar').rstrip('/') + gravatar_provider_url = getattr(settings, 'WAGTAIL_GRAVATAR_PROVIDER_URL', '//www.gravatar.com/avatar') + + if gravatar_provider_url is None: + return static('wagtailadmin/images/default-user-avatar.png') gravatar_url = "{gravatar_provider_url}/{hash}?{params}".format( - gravatar_provider_url=gravatar_provider_url, + gravatar_provider_url=gravatar_provider_url.rstrip('/'), hash=hashlib.md5(email.lower().encode('utf-8')).hexdigest(), params=urlencode({'s': size, 'd': default}) )