Beispiel #1
0
def social():
    friends = dq.find(User, ['nickname'], [g.user.nickname]).first().valid_friends()
    form = SearchForm(request.form)
    if form.validate_on_submit():
        nickname = form.search.data
        results = dq.find(User, ['nickname'], [nickname])
        count=results.count()
        return render_template('social.html', friends=friends, form=form, results=results, results_count=count)
    return render_template('social.html', friends=friends, form=form, results=None, results_count=-1)
Beispiel #2
0
def facebook_callback(resp):

    next_url = request.args.get('next') or url_for('index')

    if resp is None or 'access_token' not in resp:
        flash('You denied the login')
        return redirect(next_url)

    session['fb_access_token'] = (resp['access_token'], '')
    
    remember_me = False
    
    if 'remember_me' in session:
        remember_me = session['remember_me']
        session.pop('remember_me', None)

    fb_user = facebook.get('/me')
    fb_id = me.data['id']
    fb_email = me.data['email']
    
    if fb_user.data['username']:
        fb_username = fb_user.data['username']
    else:
        fb_username = fb_user.data['name']

    user = dq.find(User, ['facebook_id'], [str(fb_id)]).first()

    #for connecting user's acc with facebook acc
    if g.user is not None and g.user.is_authenticated():
        if user is None:
            dq.update(g.user, ['facebook_id'], [str(fb_id)])
            flash('You are now linked with %s' % fb_username)
        else:
            flash('Your fb account has been linked previously')

        return redirect(url_for('settings'))

    #for new login

    if user is None:
        u = dq.find(User, ['email'], [str(fb_email)]).first()
        if u:
            login_user(u, remember = remember_me)
            return facebook.authorize(callback=url_for('facebook_callback',
                    next=request.args.get('next') or request.referrer or None,
                    _external=True))
        else:
            dq.init_user(fb_username, fb_email, ROLE_USER, None, None, str(fb_id), None, None)

    login_user(user, remember = remember_me)

    flash('You are now logged in as %s' % user.nickname)
    return redirect(url_for('index'))
Beispiel #3
0
def ignore_response(id):
    req = dq.find(FriendRequest,['id'],[id]).first()
    #sender = User().from_id(req.sender_id)
    nickname = g.user.nickname
    db.session.delete(req)
    db.session.commit()
    return redirect(url_for('user', nickname = nickname))
Beispiel #4
0
def user(nickname, page = 1):
    user = dq.find(User, ['nickname'], [nickname]).first()
    if user == None:
        flash('User ' + nickname +' does not exist!' )
        return redirect(url_for('index'))

    #data
    borrow_records = g.user.borrow_history()
    lend_records = g.user.lend_history()
    friends = user.valid_friends()


    form = EditForm(g.user.nickname)
    if form.validate_on_submit():
        dq.update(g.user, ['nickname', 'about_me'], [form.nickname.data, form.about_me.data])
        flash('Your changes have been saved.')
        return redirect(url_for('user', nickname = nickname))
    else:
        form.nickname.data = g.user.nickname
        form.about_me.data = g.user.about_me

    return render_template('user.html',
        form = form,
        user = user,
        borrow_records = borrow_records,
        lend_records = lend_records,
        friends = friends)
Beispiel #5
0
def after_login(resp):
    if resp.email is None or resp.email == "":
        flash('Invalid Login. Please try again.')
        redirect(url_for('login'))
    user = dq.find(User, ['email'], [resp.email]).first()
    if user is None:
        user = dq.init_user(resp.nickname, resp.email, ROLE_USER, None, None, None, None, None)
    remember_me = False
    if 'remember_me' in session:
        remember_me = session['remember_me']
        session.pop('remember_me', None)
    login_user(user, remember = remember_me)
    return redirect(request.args.get('next') or url_for('index'))
Beispiel #6
0
def unfollow(nickname):
    user = dq.find(User, ['nickname'], [nickname]).first()
    if user == None:
        flash('User ' + nickname + ' not found.')
        return redirect(url_for('index'))
    if user == g.user:
        flash('You can\'t unfollow yourself!')
        return redirect(url_for('user', nickname = nickname))
    u = g.user.unfollow(user)
    if u is None:
        flash('Cannot unfollow ' + nickname + '.')
        return redirect(url_for('user', nickname = nickname))
    db.session.add(u)
    db.session.commit()
    flash('You have stopped following ' + nickname + '.')
    return redirect(url_for('user', nickname = nickname))
Beispiel #7
0
def follow(nickname):
    user = dq.find(User, ['nickname'], [nickname]).first()
    if user == None:
        flash('User ' + nickname + ' not found.')
        return redirect(url_for('index'))
    if user == g.user:
        flash('You can\'t follow yourself!')
        return redirect(url_for('user', nickname = nickname))

    request = dq.send_request(g.user, user)
    if request is False:
        flash('Cannot follow ' + nickname + '.')
        return redirect(url_for('user', nickname = nickname))
    else:
        if not user.is_valid_friend(g.user):
            flash('Your request has been sent to ' + nickname + '!')
        else:
            flash('You are now friend with ' + nickname + '!')
    return redirect(url_for('user', nickname = nickname))
Beispiel #8
0
def weibo_callback():
    code = request.args.get('code')
    r = client.request_access_token(code)
    access_token = r.access_token
    expires_in = r.expires_in 
    session['wb_access_token'] = access_token
    session['wb_expires_in'] = expires_in
    client.set_access_token(access_token, expires_in)
    wb_id = client.account.get_uid.get()['uid']

    next_url = request.args.get('next') or url_for('index')

    #for connecting user's acc with weibo acc
    if g.user is not None and g.user.is_authenticated():

        if r is None or r.access_token is None:
            flash('You denied the connection')
            return redirect(next_url)

        if dq.find(User, ['weibo_id'], [str(wb_id)]).first() is None:
            dq.update(g.user, ['weibo_id'], [str(wb_id)])
            flash('You are now linked with %s' % client.users.show.get(uid=wb_id)['screen_name'])
        else:
            flash('Your weibo account has been linked previously')

        return redirect(url_for('settings'))

    #for login  
    else:

        if r is None or r.access_token is None:
            flash('You denied the login')
            return redirect(next_url)

        #user data from server
        wb_email = client.account.profile.email.get(access_token=access_token)['email']
        weibo_user = client.users.show.get(uid=wb_id)
        wb_nickname = weibo_user['screen_name']
        wb_img = weibo_user['avatar_large']

        user = dq.find(User, ['weibo_id'], [str(wb_id)]).first()

        #cannot find a user with the current weibo id        
        if user is None:

            u = dq.find(User, ['email'], [str(wb_email)]).first()
            # email taken
            if u:
                login_user(u, remember = remember_me)
                return redirect(url)
            # email not taken
            else:
                dq.init_user(wb_nickname, wb_email, ROLE_USER, str(wb_id), wb_img, None, None, None)
                #client.statuses.update.post(status=u'test oauth2.0')

        remember_me = False
        
        if 'remember_me' in session:
            remember_me = session['remember_me']
            session.pop('remember_me', None)
        
        login_user(user, remember = remember_me)

        flash('You are now logged in as %s' % user.nickname)
        return redirect(url_for('index'))
Beispiel #9
0
def devlogin():
    user = dq.find(User, ['nickname'], ['tiotaocn']).first()
    login_user(user, remember = True)
    return redirect(request.args.get('next') or url_for('index'))
Beispiel #10
0
def admin():
    users = dq.find(User, [],[])
    requests = dq.find(FriendRequest,[],[])
    records = dq.find(Record,[],[])
    histories = dq.find(History,[],[])
    return render_template('admin.html', users=users, requests = requests, records = records, histories = histories)