Skip to content

Instantly share code, notes, and snippets.

@lemoonbox
Created August 7, 2015 09:57
Show Gist options
  • Save lemoonbox/4a807c42bfc4ab22df6e to your computer and use it in GitHub Desktop.
Save lemoonbox/4a807c42bfc4ab22df6e to your computer and use it in GitHub Desktop.
__author__ = 'moon'
from datetime import datetime
import pytz
from models import UserProfile
from social.backends.facebook import FacebookOAuth2
from requests import request, HTTPError
from django.core.files.base import ContentFile
def user_account(strategy, details, response, user=None, *args, **kwargs):
if user:
attrs = {'djgouser': user}
if type(kwargs['backend']) is FacebookOAuth2:
_profile, is_new = UserProfile.objects.get_or_create(**attrs)
_profile.save()
else:
pass
def save_propic(strategy, response, details, user=None ,*args, **kwargs):
if user:
url = 'http://graph.facebook.com/{0}/picture'.format(response['id'])
_profile = UserProfile.objects.get(djgouser=user)
print kwargs
if kwargs['is_new'] or kwargs['new_association']:
try :
responsepic = request('GET', url, params={'type':'large'})
responsepic.raise_for_status()
except HTTPError:
pass
else:
_profile.propic.save('{0}_facebook.jpg'.format(user.username),
ContentFile(responsepic.content))
FB_unitime= response[u'updated_time']
FB_unitime= response.get(u'updated_time')
FB_uptime=datetime.strptime(FB_unitime, "%Y-%m-%dT%H:%M:%S+%f")
utc=pytz.UTC
FB_uptime = utc.localize(FB_uptime)
#repeat part need try modulation
#profile pic sync
if _profile and _profile.updated_at < FB_uptime:
try :
responsepic = request('GET', url, params={'type':'large'})
responsepic.raise_for_status()
except HTTPError:
pass
else:
_profile.propic.save('{0}_facebook.jpg'.format(user.username),
ContentFile(responsepic.content))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment