Hack for fixing issue #30

This commit is contained in:
Oliver Falk
2019-01-08 11:30:00 +01:00
parent 0d133aae91
commit 3d22f6082e

View File

@@ -213,9 +213,28 @@ class GravatarProxyView(View):
'''
Override get from parent class
'''
def redir_default():
url = reverse_lazy(
'avatar_view',
args=[kwargs['digest']]) + '?s=%i' % size + '&forcedefault=y'
return HttpResponseRedirect(url)
size = get_size(request)
gravatarimagedata = None
# This part is special/hackish
# Check if the image returned by Gravatar is their default image, if so,
# redirect to our default instead.
gravatar_test_url = 'https://secure.gravatar.com/avatar/' + kwargs['digest'] \
+ '?s=%i' % 50
try:
testdata = urlopen(gravatar_test_url, timeout=URL_TIMEOUT)
data = BytesIO(testdata.read())
if hashlib.md5(data.read()).hexdigest() == '71bc262d627971d13fe6f3180b93062a':
return redir_default()
except Exception as exc:
print('Gravatar test url fetch failed: %s' % exc)
gravatar_url = 'https://secure.gravatar.com/avatar/' + kwargs['digest'] \
+ '?s=%i' % size
@@ -226,14 +245,17 @@ class GravatarProxyView(View):
print(
'Gravatar fetch failed with an unexpected %s HTTP error' %
exc.code)
return redir_default()
except URLError as exc:
print(
'Gravatar fetch failed with URL error: %s' %
exc.reason)
return redir_default()
except SSLError as exc:
print(
'Gravatar fetch failed with SSL error: %s' %
exc.reason)
return redir_default()
try:
data = BytesIO(gravatarimagedata.read())
img = Image.open(data)
@@ -244,9 +266,7 @@ class GravatarProxyView(View):
except ValueError as exc:
print('Value error: %s' % exc)
return redir_default()
# TODO: In case anything strange happens, we need to redirect to the default
url = reverse_lazy(
'avatar_view',
args=[kwargs['digest']]) + '?s=%i' % size + '&forcedefault=y'
return HttpResponseRedirect(url)
# We shouldn't reach this point... But make sure we do something
return redir_default()