def invite_fb(self, group): # Handle POST. invited = request.params.get('ids[]') if invited: ids = invited.split(',') for facebook_id in ids: group.create_pending_fb_invitation(int(facebook_id), c.user) make_facebook_invitations(ids, c.user, group.location) meta.Session.commit() h.flash(ungettext('Invited %(num)d friend.', 'Invited %(num)d friends.', len(ids)) % dict(num=len(ids))) redirect(c.group.url(action='members')) # Render page. fb_user = facebook.get_user_from_cookie(request.cookies, config['facebook.appid'], config['facebook.secret']) c.has_facebook = fb_user is not None if c.has_facebook: try: graph = facebook.GraphAPI(fb_user['access_token']) friends = graph.get_object("me/friends") except facebook.GraphAPIError: c.has_facebook = False if not c.has_facebook: # Ask to log on to facebook. return render('group/invite.mako') friend_ids = [f['id'] for f in friends['data']] friend_users = meta.Session.query(User).filter( User.facebook_id.in_(friend_ids)).all() c.exclude_ids = ','.join(str(u.facebook_id) for u in friend_users if c.group.is_member(u)) return render('group/invite.mako')
def invite_friends_fb(self): # handle facebook callback ids = request.params.get('ids[]') if ids: ids = map(int, ids.split(',')) invited = make_facebook_invitations(ids, c.user, c.user.location) meta.Session.commit() if invited: h.flash(ungettext('Invited %(num)d friend.', 'Invited %(num)d friends.', len(invited)) % dict(num=len(invited))) redirect(url(controller='profile', action='home')) # render page fb_user = facebook.get_user_from_cookie(request.cookies, config['facebook.appid'], config['facebook.secret']) c.has_facebook = fb_user is not None if c.has_facebook: try: graph = facebook.GraphAPI(fb_user['access_token']) friends = graph.get_object("me/friends") friend_ids = [f['id'] for f in friends['data']] friend_users = meta.Session.query(User)\ .filter(User.facebook_id.in_(friend_ids))\ .filter(User.location == c.user.location).all() c.exclude_ids = ','.join(str(u.facebook_id) for u in friend_users) except facebook.GraphAPIError: c.has_facebook = False return render('profile/invite_friends_fb.mako')