def invite_facebook_friends(request): try: auth = UserSocialAuth.objects.get(user=request.user, provider='facebook') fb = facebook_factory() cache_key = 'user_facebook_friends:%d:%s' % (request.user.pk, auth.extra_data['id']) friends_list = cache.get(cache_key) invited_fb_ids = FacebookInvite.objects.filter( user=request.user).values_list('facebook_user_id', flat=True) if friends_list is None: friends_list = fb.get_user_friends(auth.extra_data) cache.set(cache_key, friends_list, 3600) friends_list_json = json.dumps( [f['id'] for f in friends_list if not f['id'] in invited_fb_ids]) except UserSocialAuth.DoesNotExist: #user has not logged in via Facebook auth_url = reverse('socialauth_associate_begin', kwargs={'backend': 'facebook'}) except FacebookAPIError: #most likely user's auth token has expired auth_url = reverse('socialauth_begin', kwargs={'backend': 'facebook'}) site = Site.objects.get_current() invite = FacebookInvite.objects.get_or_create(user=request.user, sent=True)[0] return direct_to_template(request, 'invite_friends/facebook_invite.html', locals())
def invite_facebook_friends(request): try: auth = UserSocialAuth.objects.get(user=request.user, provider='facebook') fb = facebook_factory() cache_key = 'user_facebook_friends:%d:%s' % (request.user.pk, auth.extra_data['id']) friends_list = cache.get(cache_key) invited_fb_ids = FacebookInvite.objects.filter(user=request.user).values_list('facebook_user_id', flat=True) if friends_list is None: friends_list = fb.get_user_friends(auth.extra_data) cache.set(cache_key, friends_list, 3600) friends_list_json = json.dumps([f['id'] for f in friends_list if not f['id'] in invited_fb_ids]) except UserSocialAuth.DoesNotExist: #user has not logged in via Facebook auth_url = reverse('socialauth_associate_begin', kwargs={'backend': 'facebook'}) except FacebookAPIError: #most likely user's auth token has expired auth_url = reverse('socialauth_begin', kwargs={'backend': 'facebook'}) site = Site.objects.get_current() invite = FacebookInvite.objects.get_or_create(user=request.user, sent=True)[0] return direct_to_template(request, 'invite_friends/facebook_invite.html', locals())
def facebook_extra_values(sender, user, response, details, **kwargs): #avoid circular imports from invite_friends.facebook import facebook_factory, FacebookAPIError update_user_base_data(user, details) user.save() profile = user.get_profile() profile.name = user.get_full_name() if profile.image=='' or profile.image==DEFAULT_PROFILE_IMAGE: try: fb = facebook_factory() img = fb.get_profile_picture(response['access_token'], response['id']) if img: profile.image.save(*img) except FacebookAPIError: pass profile.save() if user.emailaddress_set.count()==0: EmailAddress.objects.get_or_create(user=user, email=user.email, primary=True) return True
def setUp(self): self.fb = facebook_factory()