def adduser(provider_id=None): provider = get_provider_or_404(provider_id) form = RegisterForm() print form connection_values = session.get('failed_login_connection', None) print connection_values access_token = connection_values['access_token'] graph = facebook.GraphAPI(access_token) profile = graph.get_object("me") email = profile["email"] print email #ds = security.user_datastore user = ds.create_user(email=email, password="******") ds.commit() # See if there was an attempted social login prior to registering # and if so use the provider connect_handler to save a connection connection_values = session.pop('failed_login_connection', None) if connection_values: connection_values['user_id'] = user.id connect_handler(connection_values, provider) if login_user(user): ds.commit() flash('Account created successfully', 'info') return redirect(url_for('profile')) return abort(404)
def register(provider_id=None): if current_user.is_authenticated(): return redirect(request.referrer or '/') if provider_id: provider = get_provider_or_404(provider_id) connection_values = session.pop('failed_login_connection', None) else: provider = None connection_values = None app.logger.debug("Attemption to register with connection_values: %s" % repr(connection_values)) if connection_values is not None: ds = app.security.datastore fake_email = connection_values['provider_user_id'] + "*****@*****.**" user = ds.create_user(email=fake_email, password="******") ds.commit() connection_values['user_id'] = user.id connect_handler(connection_values, provider) login_user(user) ds.commit() flash('Account created successfully', 'info') return redirect(url_for('index')) return abort(404)
def register(provider_id=None): print 'REGISTER' if current_user.is_authenticated(): return redirect(request.referrer or '/') print 'HELLLLLLOOOOO' form = RegisterForm() if provider_id: print provider_id provider = get_provider_or_404(provider_id) connection_values = session.get('failed_login_connection', None) else: provider = None connection_values = None print 'true?' print provider print connection_values print form.validate_on_submit() print form.email.data if provider and connection_values and form.validate_on_submit(): char_set = string.ascii_uppercase + string.digits ds = current_app.security.datastore user = ds.create_user( email=form.email.data, password=''.join(random.sample(char_set*32,32)) ) user.api_key = ''.join(random.sample(char_set*32,32)) ds.commit() # See if there was an attempted social login prior to registering # and if so use the provider connect_handler to save a connection connection_values = session.pop('failed_login_connection', None) if connection_values: connection_values['user_id'] = user.id connect_handler(connection_values, provider) if login_user(user): ds.commit() flash('Account created successfully', 'info') return redirect(url_for('profile')) return render_template('thanks.html', user=user) login_failed = int(request.args.get('login_failed', 0)) print "login failed? " print login_failed return render_template('register.html', form=form, provider=provider, login_failed=login_failed, connection_values=connection_values)
def register(provider_id=None): print 'REGISTER' if current_user.is_authenticated(): return redirect(request.referrer or '/') print 'HELLLLLLOOOOO' form = RegisterForm() if provider_id: print provider_id provider = get_provider_or_404(provider_id) connection_values = session.get('failed_login_connection', None) else: provider = None connection_values = None print 'true?' print provider print connection_values print form.validate_on_submit() print form.email.data if provider and connection_values and form.validate_on_submit(): char_set = string.ascii_uppercase + string.digits ds = current_app.security.datastore user = ds.create_user(email=form.email.data, password=''.join(random.sample( char_set * 32, 32))) user.api_key = ''.join(random.sample(char_set * 32, 32)) ds.commit() # See if there was an attempted social login prior to registering # and if so use the provider connect_handler to save a connection connection_values = session.pop('failed_login_connection', None) if connection_values: connection_values['user_id'] = user.id connect_handler(connection_values, provider) if login_user(user): ds.commit() flash('Account created successfully', 'info') return redirect(url_for('profile')) return render_template('thanks.html', user=user) login_failed = int(request.args.get('login_failed', 0)) print "login failed? " print login_failed return render_template('register.html', form=form, provider=provider, login_failed=login_failed, connection_values=connection_values)
def register(provider_id=None): if current_user.is_authenticated(): return redirect(request.referrer or '/') form = RegisterForm() if provider_id: provider = get_provider_or_404(provider_id) connection_values = session.get('failed_login_connection', None) else: provider = None connection_values = None if form.validate_on_submit(): ds = current_app.security.datastore user = ds.create_user(email=form.email.data, password=form.password.data) user.age = form.age.data user.twitter_handle = form.twitter_handle.data user.name = form.name.data user.study = u'no' user.work = u'no' user.sex = form.sex.data ds.commit() # See if there was an attempted social login prior to registering # and if so use the provider connect_handler to save a connection connection_values = session.pop('failed_login_connection', None) print form.next.data if connection_values: connection_values['user_id'] = user.id connect_handler(connection_values, provider) if login_user(user): ds.commit() flash('Cuenta creada correctamente!', 'info') return redirect(form.next.data or '/') return render_template('thanks.html', user=user) login_failed = int(request.args.get('login_failed', 0)) return render_template('register.html', form=form, provider=provider, login_failed=login_failed, connection_values=connection_values, next=request.args.get('next'))
def social_post(provider_id): message = request.form.get("message", None) if message: provider = get_provider_or_404(provider_id) api = provider.get_api() if provider_id == "twitter": display_name = "Twitter" api.PostUpdate(message) if provider_id == "facebook": display_name = "Facebook" api.put_object("me", "feed", message=message) flash("Message posted to %s: %s" % (display_name, message), "info") return redirect(url_for("profile"))
def social_post(provider_id): message = request.form.get('message', None) if message: provider = get_provider_or_404(provider_id) api = provider.get_api() if provider_id == 'twitter': display_name = 'Twitter' api.PostUpdate(message) if provider_id == 'facebook': display_name = 'Facebook' api.put_object("me", "feed", message=message) flash('Message posted to %s: %s' % (display_name, message), 'info') return redirect(url_for('profile'))
def twitter_friends(): from exttwitter import Relationship, RelationshipUser, ShowFriendships, ConnectionUser, ShowConnections twitter_api = get_provider_or_404('twitter').get_api() twitter_api.ShowFriendships = types.MethodType(ShowFriendships, twitter_api) twitter_api.ShowConnections = types.MethodType(ShowConnections, twitter_api) twitter_conn = app.social.twitter.get_connection() friends = twitter_api.GetFriendIDs(user_id=twitter_conn.provider_user_id) # test ShowFriendships for just one friend friendship = twitter_api.ShowFriendships( source_id=twitter_conn.provider_user_id, target_id=friends[0]) connections = twitter_api.ShowConnections(user_ids=friends) return render_template("twitter_friends.html", friendship=friendship, twitter_friends=friends, connections=connections)
def register(provider_id=None): if current_user.is_authenticated(): return redirect(request.referrer or '/') form = RegisterForm() if provider_id: provider = get_provider_or_404(provider_id) connection_values = session.get('failed_login_connection', None) else: provider = None connection_values = None if form.validate_on_submit(): ds = current_app.security.datastore user = ds.create_user(email=form.email.data, password=form.password.data) ds.commit() # See if there was an attempted social login prior to registering # and if so use the provider connect_handler to save a connection connection_values = session.pop('failed_login_connection', None) if connection_values: connection_values['user_id'] = user.id connect_handler(connection_values, provider) if login_user(user): ds.commit() flash('Account created successfully', 'info') return redirect(url_for('profile')) return render_template('thanks.html', user=user) login_failed = int(request.args.get('login_failed', 0)) return render_template('register.html', form=form, provider=provider, login_failed=login_failed, connection_values=connection_values)
def group(): # update the cache of this user's twitter friends commit_required = helpers.update_twitter_friends_cache( twitter_id=helpers.get_twitter_id(user=current_user), twitter_api=get_provider_or_404('twitter').get_api(), db_session=db.session) if commit_required: db.session.commit() # loads the existing group group = current_user.who_they_lookin_at group_names = [] if group is not None: group_names = [r.looking_at_twitter_display_name.lower() for r in group] # returns tuple of (id, value) mutual = helpers.get_twitter_mutual_friends( twitter_id=helpers.get_twitter_id(user=current_user)) mutual.sort(key=lambda s: s[1].lower()) mutual_dict = dict(mutual) add_form = AddGroupMemberFromTwitterNameForm() add_form.twitter_id.choices = mutual remove_form = RemoveGroupMemberForm() if request.method == 'POST' and add_form.validate(): if mutual_dict.has_key(add_form.twitter_id.data) is False: flash("That Twitter ID is unknown and can't be added to your group", "error") elif mutual_dict[add_form.twitter_id.data].lower() in group_names: flash("That member is already in your group!", "error") else: new_group_member = WhoYouLookinAt(user_id=current_user.id, looking_at_twitter_display_name=mutual_dict[add_form.twitter_id.data].lower()) db.session.add(new_group_member) db.session.commit() flash('You added a member to your group!') # reload group group = current_user.who_they_lookin_at return render_template("group.html", lookin_at=group, add_form=add_form, remove_form=remove_form)
def send_glance(): """ Sends a glance to all Twitter friends of the logged-in user. Launch functionality: - all glance-related tables now use twitter_id (an integer) - updates the local cache of twitter friendships if required - saves that a glance was sent by this user - for all twitter friends of this user: - logs an unnoticed glance for that receiver (appears to the sender anonymously for 24 hour). all do this! - if the friend is a registered user and looking back, logs a noticed glance for that receiver too (appears to the sender named and forever) - commits the session @todo functionality: - cache mutual friendships of all this user's friends - (requires friendships/lookup.json added to python-twitter) - for all twitter friends of this user: - if the friend is a mutual friend and not looking back, logs a transitory glance (appears to the sender named for an hour, then anonymously for 24 hours). This is in addition to the unnoticed glance """ # check whether we're really sending the glance glance_form = DoGlanceForm() if not (request.method == 'POST' and glance_form.validate()): flash("Glance not successful", "error") return redirect(url_for('index')) # everything following works from the sender's Twitter ID sender_twitter_id = helpers.get_twitter_id(user=current_user) # update the cache of the sender's twitter friends commit_required = helpers.update_twitter_friends_cache( twitter_id=sender_twitter_id, twitter_api=get_provider_or_404('twitter').get_api(), db_session=db.session) if commit_required: db.session.commit() # log the sent glance. note no commit... the next time we commit # is at the end of the function helpers.log_sent_glance( sender_twitter_id=sender_twitter_id, db_session=db.session) # db not yet committed! # loop over all twitter friends of the sender... these are # all receivers. Returns [(twitter_id, is_mutual),] receivers = helpers.get_twitter_friends(twitter_id=sender_twitter_id) # loads the twitter IDs of receivers who will notice this will_notice_list = helpers.get_reverse_group_as_twitter_ids( user=current_user) #print will_notice_list glance_is_noticed = lambda r: r in will_notice_list # every receiver gets an unnoticed glance helpers.log_unnoticed_glances( receivers=[r[0] for r in receivers], db_session=db.session) # and we need to delete old unnoticed glances too helpers.sweep_unnoticed_glances( receivers=[r[0] for r in receivers], db_session=db.session) for receiver_twitter_id, is_mutual in receivers: # additionally the receiver might get a noticed or a transitory # glance if glance_is_noticed(receiver_twitter_id): # if the receiver is a registered user and the sender is in the # receiver's group, this glance will be noticed #print "%s will notice" % receiver_twitter_id helpers.log_noticed_glance( sender_twitter_id=sender_twitter_id, receiver_twitter_id=receiver_twitter_id, db_session=db.session) #else: # print "%s won't notice" % receiver_twitter_id if is_mutual: # transitory glances are those glances sent to twitter # friends where the friendship is mutual. in that case, the # receiver notices the glance temporarily, even if the sender # is not in the receiver's group helpers.log_transitory_glance( sender_twitter_id=sender_twitter_id, receiver_twitter_id=receiver_twitter_id, db_session=db.session) # commit and finish up db.session.commit() session['glance_done'] = True return redirect(url_for('index'))
def registerS(provider_id=None): ## register_user_form = RegisterForm() if provider_id: provider = get_provider_or_404(provider_id) connection_values = session.get('failed_login_connection',None) else: provider = None connection_values = None print connection_values ## print user.id ## db.session.commit() ## access_token=connection_values[u'access_token'] if connection_values: email=connection_values[u'email'] ## print email user=user_datastore.find_user(email=email) if(user): connectionE=connection_datastore.find_connection(**connection_values) if connectionE is None: connection_values['user_id'] = user.id connection=connection_datastore.create_connection(**connection_values) if login_user(user): db.session.commit() flash('Facebook account linked successfully with existing id', 'info') return redirect('/user') else: flash('Failed to link with Facebook!Try Again', 'info') return redirect('/user') else: if login_user(user): ## flash(' Facebook Already linked', 'info') return redirect('/user') else: ## print "hello" user = user_datastore.create_user() db.session.commit() connection_values['user_id'] = user.id ## print connection_values['user_id'] connectionE=connection_datastore.find_connection(**connection_values) if connectionE is None: connection=connection_datastore.create_connection(**connection_values) if login_user(user): db.session.commit() flash('Account created successfully', 'info') api=provider.get_api() ## print api profile=api.get_object("me") ## print profile email = profile["email"] user.email=email user.username=email user.first_name=profile["first_name"] user.last_name=profile["last_name"] user.gender=profile["gender"] user.active=1 db.session.commit() ## flash('Account created successfully', 'info') return redirect('/user') else: flash('Failed!Try Again', 'info') return redirect("/register") else: flash('Failed!Try Again', 'info') return redirect("/register") else: flash('Connection Refused','info') return redirect("/register")