Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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'))
Пример #6
0
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"))
Пример #7
0
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'))
Пример #8
0
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'))
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
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'))
Пример #14
0
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")