Beispiel #1
0
def get_user(user_id):
    user = User()
    user['_id'] = user_id

    if not user.load():
        return Response('User not found.', status=http.NOT_FOUND)

    return Response(dumps(user), status=http.FOUND, mimetype="application/json")
Beispiel #2
0
 def test_make_unique_nickname(self):
     u = User(nickname='john', email='*****@*****.**')
     db.session.add(u)
     db.session.commit()
     nickname = User.make_unique_nickname('john')
     assert nickname != 'john'
     u = User(nickname=nickname, email='*****@*****.**')
     db.session.add(u)
     db.session.commit()
     nickname2 = User.make_unique_nickname('john')
     assert nickname2 != 'john'
     assert nickname2 != nickname
Beispiel #3
0
def grant_points(user_id, category, amount):
    user = User()
    user['_id'] = user_id

    if not user.load():
        return
    if category not in ['fundraising', 'service', 'flex', 'attendance']:
        print('category was', category)
        return

    user[category] += amount
    user.save()
Beispiel #4
0
def search_user():
    key = request.args.get('key')
    val = request.args.get('val')

    if not key and val:
        return Response('Query string requires "key" and "val" arguments.', status=http.BAD_REQUEST)

    user = User()
    user[key] = val

    if not user.load(key):
        return Response('User not found.', status=http.NOT_FOUND)

    return Response(dumps(user), status=http.FOUND, mimetype="application/json")
Beispiel #5
0
def test_register(client, auth):
    """ Test that registration page opens up """
    resp = client.get("/register")
    assert resp.status_code == 200
    response = auth.register()
    assert response.status_code == 200
    user = User.objects(username="******").first()
    assert user is not None
Beispiel #6
0
def account():
    username_form = UpdateUsernameForm()
    password_form = UpdatePasswordForm()
    profile_pic_form = UpdateProfilePicForm()

    if password_form.validate_on_submit():
        hashed = bcrypt.generate_password_hash(
            password_form.new_password.data).decode("utf-8")

        msg = Message('Password Change',
                      sender='*****@*****.**',
                      recipients=[str(temp.email)])
        msg.body = "Your password has been updated! Please reply to this e-mail if you did not request this change."
        mail.send(msg)

        current_user.modify(password=hashed)
        current_user.save()

        return redirect(url_for('users.account'))

    if username_form.validate_on_submit():
        temp = User.objects(username=current_user.username).first()
        current_user.username = username_form.username.data

        msg = Message('Username Change',
                      sender='*****@*****.**',
                      recipients=[str(temp.email)])
        msg.body = "Your username has been updated!\nYour new username is: " + str(
            username_form.username.data)
        mail.send(msg)

        current_user.modify(username=username_form.username.data)
        current_user.save()

        return redirect(url_for('users.account'))

    if profile_pic_form.validate_on_submit():
        img = profile_pic_form.propic.data
        filename = secure_filename(img.filename)

        if current_user.profile_pic.get() is None:
            current_user.profile_pic.put(img.stream, content_type='images/png')
        else:
            current_user.profile_pic.replace(img.stream,
                                             content_type='images/png')
        current_user.save()

        return redirect(url_for('users.account'))

    image = images(current_user.username)

    return render_template("account.html",
                           title="Account",
                           username_form=username_form,
                           password_form=password_form,
                           profile_pic_form=profile_pic_form,
                           image=image)
Beispiel #7
0
def test_subscriptions(my_app, my_db):
    with my_app.app_context():
        user = User(username='******', password='******', email='*****@*****.**')
        quote = Quote(ticker_name='TEST',
                      exchange='TEST',
                      timezone='TEST',
                      current_price='TEST',
                      change='TEST',
                      change_percent='TEST',
                      last_updated=datetime.now())
        user.subscriptions.append(quote)
        my_db.session.add(user)
        my_db.session.commit()

        assert len(Quote.query.all()[0].users) == 1
        assert len(User.query.all()[0].subscriptions) == 1

        #add another user
        user2 = User(username='******',
                     password='******',
                     email='*****@*****.**')
        user2.subscriptions.append(quote)
        my_db.session.add(user2)
        my_db.session.commit()

        assert len(Quote.query.all()[0].users) == 2
        assert len(User.query.all()[1].subscriptions) == 1

        #delete user 1 and assert quote object is not deleted
        my_db.session.delete(user)
        my_db.session.commit()

        assert len(Quote.query.all()) == 1
        assert len(User.query.all()) == 1

        #test deleting subscription
        user2.subscriptions.remove(quote)
        my_db.session.commit()

        #quote has to be manually deleted i think...
        assert len(Quote.query.all()[0].users) == 0
        assert len(User.query.all()) == 1
        #clear db
        my_db.drop_all()
Beispiel #8
0
 def validate(self):
     if not Form.validate(self):
         return False
     if self.nickname.data == self.original_nickname:
         return True
     if self.nickname.data != User.make_valid_nickname(self.nickname.data):
         self.nickname.errors.append(gettext('This nickname has invalid characters. Please use letters, numbers, dots and underscores only.'))
         return False
     user = User.query.filter_by(nickname=self.nickname.data).first()
     if user is not None:
         self.nickname.errors.append(gettext('This nickname is already in use. Please choose another one.'))
         return False
     return True
Beispiel #9
0
def promote_user():
    key = request.args.get('key')
    val = request.args.get('val')

    if not key and val:
        return Response('Query string requires "key" and "val" arguments.', status=http.BAD_REQUEST)

    user = User()
    user[key] = val

    if not user.load(key):
        return Response('User not found.', status=http.NOT_FOUND)
    
    user['is_officer'] = True
    user.save()

    return Response('Promoted user.', status=http.OK)

# @mod.route('/demote_user', methods=['GET'])
# @auth_required
# @officer_required
# def demote_user():
#     key = request.args.get('key')
#     val = request.args.get('val')   

#     if not key and val:
#         return Response('Query string requires "key" and "val" arguments.', status=http.BAD_REQUEST)
    
#     user = User()
#     user[key] = val

#     if not user.load(key):
#         return Response('User not found.', status=http.NOT_FOUND)

#     user['is_officer'] = False
#     user.save()

#     return Response('Demoted user.' status=http.OK)
Beispiel #10
0
def oauth2callback():
    resp = google.authorized_response()
    if resp is None:
        return 'Access denied: reason=%s error=%s.' % (
            request.args['error_reason'],
            request.args['error_description']
        )
    session['google_token'] = (resp['access_token'], '')
    me = google.get('userinfo')

    if me.data.get('email').lower() not in current_app.config.get('WHITELIST'):
        return redirect(url_for('static.index'))
    else:
        # load the user
        user = User()
        user['email'] = me.data.get('email')
        user['first_name'] = me.data.get('given_name')
        user['last_name'] = me.data.get('family_name')
        
        if not user.load(key='email'):
            user.save()
            
        login_user(user)
        return redirect(url_for('members.dashboard'))
Beispiel #11
0
 def test_follow(self):
     u1 = User(nickname='john', email='*****@*****.**')
     u2 = User(nickname='susan', email='*****@*****.**')
     db.session.add(u1)
     db.session.add(u2)
     db.session.commit()
     assert u1.unfollow(u2) is None
     u = u1.follow(u2)
     db.session.add(u)
     db.session.commit()
     assert u1.follow(u2) is None
     assert u1.is_following(u2)
     assert u1.followed.count() == 1
     assert u1.followed.first().nickname == 'susan'
     assert u2.followers.count() == 1
     assert u2.followers.first().nickname == 'john'
     u = u1.unfollow(u2)
     assert u is not None
     db.session.add(u)
     db.session.commit()
     assert not u1.is_following(u2)
     assert u1.followed.count() == 0
     assert u2.followers.count() == 0
Beispiel #12
0
 def test_follow_posts(self):
     # make four users
     u1 = User(nickname='john', email='*****@*****.**')
     u2 = User(nickname='susan', email='*****@*****.**')
     u3 = User(nickname='mary', email='*****@*****.**')
     u4 = User(nickname='david', email='*****@*****.**')
     db.session.add(u1)
     db.session.add(u2)
     db.session.add(u3)
     db.session.add(u4)
     # make four posts
     utcnow = datetime.utcnow()
     p1 = Post(body="post from john", author=u1, timestamp=utcnow + timedelta(seconds=1))
     p2 = Post(body="post from susan", author=u2, timestamp=utcnow + timedelta(seconds=2))
     p3 = Post(body="post from mary", author=u3, timestamp=utcnow + timedelta(seconds=3))
     p4 = Post(body="post from david", author=u4, timestamp=utcnow + timedelta(seconds=4))
     db.session.add(p1)
     db.session.add(p2)
     db.session.add(p3)
     db.session.add(p4)
     db.session.commit()
     # setup the followers
     u1.follow(u1)  # john follows himself
     u1.follow(u2)  # john follows susan
     u1.follow(u4)  # john follows david
     u2.follow(u2)  # susan follows herself
     u2.follow(u3)  # susan follows mary
     u3.follow(u3)  # mary follows herself
     u3.follow(u4)  # mary follows david
     u4.follow(u4)  # david follows himself
     db.session.add(u1)
     db.session.add(u2)
     db.session.add(u3)
     db.session.add(u4)
     db.session.commit()
     # check the followed posts of each user
     f1 = u1.followed_posts().all()
     f2 = u2.followed_posts().all()
     f3 = u3.followed_posts().all()
     f4 = u4.followed_posts().all()
     assert len(f1) == 3
     assert len(f2) == 2
     assert len(f3) == 2
     assert len(f4) == 1
     assert f1 == [p4, p2, p1]
     assert f2 == [p3, p2]
     assert f3 == [p4, p3]
     assert f4 == [p4]
Beispiel #13
0
 def test_avatar(self):
     u = User(nickname='john', email='*****@*****.**')
     avatar = u.avatar(128)
     expected = 'http://www.gravatar.com/avatar/d4c74594d841139328695756648b6bd6'
     assert avatar[0:len(expected)] == expected
Beispiel #14
0
def get_user(user_id):
    user = User()
    user['_id'] = user_id
    user.load()
    return user