Skip to content
Snippets Groups Projects
Commit a4a44d2b authored by Megan Henning's avatar Megan Henning
Browse files

Merge pull request #257 from scitran/gravatar-bug

Lookup gravatar and save info on login
parents 87a11071 459af230
No related branches found
No related tags found
Loading
......@@ -158,12 +158,17 @@ class RequestHandler(webapp2.RequestHandler):
query.pop('sz', None)
u = u._replace(query=urllib.urlencode(query, True))
provider_avatar = urlparse.urlunparse(u)
# Update the user's provider avatar if it has changed.
config.db.users.update_one({'_id': uid, 'avatars.provider': {'$ne': provider_avatar}}, {'$set':{'avatars.provider': provider_avatar, 'modified': timestamp}})
# If the user has no avatar set, mark this as their chosen avatar.
# If the user has no avatar set, mark their provider_avatar as their chosen avatar.
config.db.users.update_one({'_id': uid, 'avatar': {'$exists': False}}, {'$set':{'avatar': provider_avatar, 'modified': timestamp}})
# Update the user's provider avatar if it has changed.
config.db.users.update_one({'_id': uid, 'avatars.provider': {'$ne': provider_avatar}}, {'$set':{'avatars.provider': provider_avatar, 'modified': timestamp}})
# Look to see if user has a Gravatar
gravatar = util.resolve_gravatar(uid)
if gravatar is not None:
# Update the user's gravatar if it has changed.
config.db.users.update_one({'_id': uid, 'avatars.gravatar': {'$ne': gravatar}}, {'$set':{'avatars.gravatar': gravatar, 'modified': timestamp}})
return uid
......
import datetime
import hashlib
import pymongo
import requests
from .. import base
from .. import util
......@@ -127,7 +125,7 @@ class UserHandler(base.RequestHandler):
# If the user exists but has no set avatar, try to get one
if user and avatar is None:
gravatar = self._resolve_gravatar(email)
gravatar = util.resolve_gravatar(email)
if gravatar is not None:
user = config.db['users'].find_one_and_update({
......@@ -149,19 +147,6 @@ class UserHandler(base.RequestHandler):
else:
self.abort(404, 'no avatar')
def _resolve_gravatar(self, email):
"""
Given an email, returns a URL if that email has a gravatar set.
Otherwise returns None.
"""
gravatar = 'https://gravatar.com/avatar/' + hashlib.md5(email).hexdigest() + '?s=512'
if requests.head(gravatar, params={'d': '404'}):
return gravatar
else:
return None
def _get_user(self, _id):
user = self.storage.get_container(_id)
if user is not None:
......
......@@ -8,6 +8,8 @@ import os
import pytz
import tempdir as tempfile
import uuid
import requests
import hashlib
from . import config
MIMETYPES = [
......@@ -54,6 +56,18 @@ def user_perm(permissions, _id, site=None):
else:
return {}
def resolve_gravatar(email):
"""
Given an email, returns a URL if that email has a gravatar set.
Otherwise returns None.
"""
gravatar = 'https://gravatar.com/avatar/' + hashlib.md5(email).hexdigest() + '?s=512'
if requests.head(gravatar, params={'d': '404'}):
return gravatar
else:
return None
def container_fileinfo(container, filename):
for fileinfo in container.get('files', []):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment