Beispiel #1
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 #2
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    form = RegistrationForm()
    if form.validate_on_submit():
        user = User(username=form.username.data, email=form.email.data)
        user.set_password(form.password.data)
        db.session.add(user)
        db.session.commit()
        flash('Congratulations, you are now a registered user!')
        return redirect(url_for('user.login'))
    return render_template('register.html', title='Register', form=form)
Beispiel #3
0
    def test_make_unique_nickname(self):
        u = User(nickname='TestUser', email='*****@*****.**')
        db.session.add(u)
        db.session.commit()
        nickname = User.make_unique_nickname('TestUser')
        assert nickname != 'TestUser'

        u = User(nickname=nickname, email='*****@*****.**')
        db.session.add(u)
        db.session.commit()
        nickname2 = User.make_unique_nickname('TestUser')
        assert nickname2 != 'TestUser'
        assert nickname2 != nickname
Beispiel #4
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('main.index'))

    form = RegistrationForm()
    if form.validate_on_submit():
        user = User(username=form.username.data, email=form.email.data)
        user.set_password(form.password.data)
        db.session.add(user)
        db.session.commit()
        flash('You Signed Up succesfully. Now you can login to our service.')
        return redirect(url_for('auth.login'))
    return render_template('auth/register.html', form=form)
Beispiel #5
0
def get_users():

    page = request.args.get('page', 1, type=int)
    per_page = min(request.args.get('per_page', 10, type=int), 100)
    data = User.to_collection_dict(User.query, page, per_page, 'api.get_users')

    return jsonify(data)
Beispiel #6
0
def create_user():
    data = request.get_json() or {}
    if 'username' not in data or 'email' not in data or 'password' not in data:
        return bad_request('must include username, email and password fields')
    if User.query.filter_by(username=data['username']).first():
        return bad_request('please use a different username')
    if User.query.filter_by(email=data['email']).first():
        return bad_request('please use a different email address')
    user = User()
    user.from_dict(data, new_user=True)
    db.session.add(user)
    db.session.commit()
    response = jsonify(user.to_dict())
    response.status_code = 201
    response.headers['Location'] = url_for('api.get_user', id=user.id)
    return response
Beispiel #7
0
def get_followed(id):

    user = User.query.get_or_404(id)
    page = request.args.get('page', 1, type=int)
    per_page = min(request.args.get('per_page', 10, type=int), 100)
    data = User.to_collection_dict(user.followed, page, per_page,
                                'api.get_followed', id=id)
    return jsonify(data)
Beispiel #8
0
 def validate(self):
     if not Form.validate(self):
         return False
     if self.nickname.data == self.original_nickname:
         return True
     nickname_exists = User.check_nickname_exists(self.nickname.data)
     if nickname_exists:
         self.nickname.errors.append(
             _('This nickname is already in use.'
               'Please choose another one.'))
         return False
     return True
Beispiel #9
0
def reset_password(token):
    if current_user.is_authenticated:
        return redirect(url_for('main.index'))
    user = User.verify_reset_password_token(token)
    if not user:
        return redirect(url_for('main.index'))
    form = ResetPasswordForm()
    if form.validate_on_submit():
        user.set_password(form.password.data)
        db.session.commit()
        flash(_('Your password has been reset.'))
        return redirect(url_for('auth.login'))
    return render_template('auth/reset_password.html', form=form)
Beispiel #10
0
def after_login(resp):
    if resp.email is None or resp.email == "":
        flash(_('Invalid login. Please try again.'), "danger")
        return redirect(url_for('.login'))
    user = User.query.filter_by(email=resp.email).first()
    if user is None:
        nickname = resp.nickname
        if nickname is None or nickname == "":
            nickname = resp.email.split('@')[0]
        nickname = User.make_valid_nickname(nickname)
        nickname = User.make_unique_nickname(nickname)
        user = User(nickname=nickname, email=resp.email, role=ROLE_USER)
        db.session.add(user)
        db.session.commit()
        # make the user follow him/herself
        db.session.add(user.follow(user))
        db.session.commit()
    remember_me = False
    if 'remember_me' in session:
        remember_me = session['remember_me']
        session.pop('remember_me', None)
    login_user(user, remember_me)
    return redirect(request.args.get('next') or url_for('index.home'))
Beispiel #11
0
def edit():
    form = EditForm(g.user.nickname)
    if form.validate_on_submit():
        g.user.nickname = User.make_valid_nickname(form.nickname.data)
        g.user.about_me = form.about_me.data
        db.session.add(g.user)
        db.session.commit()
        flash(_('Your changes have been saved.'), "success")
        return redirect(url_for('user.user', nickname=g.user.nickname))
    else:
        form.nickname.data = g.user.nickname
        form.about_me.data = g.user.about_me
        return render_template('frontend/user_edit.html',
                               title=_("User Edit"),
                               form=form)
Beispiel #12
0
def createsuperuser():
    """Init application, create database tables
    and create a new user named admin with password admin
    """
    from microblog.models import User

    click.echo("creating user")
    user = User(
        username='******',
        email='*****@*****.**',
        password='******',
        active=True
    )
    db.session.add(user)
    db.session.commit()
    click.echo("created user admin")
Beispiel #13
0
    def test_follow(self):
        u1 = User(username='******', email='*****@*****.**')
        u2 = User(username='******', email='*****@*****.**')
        db.session.add(u1)
        db.session.add(u2)
        db.session.commit()
        self.assertEqual(u1.followed.all(), [])
        self.assertEqual(u1.followers.all(), [])

        u1.follow(u2)
        db.session.commit()
        self.assertTrue(u1.is_following(u2))
        self.assertEqual(u1.followed.count(), 1)
        self.assertEqual(u1.followed.first().username, 'susan')
        self.assertEqual(u2.followers.count(), 1)
        self.assertEqual(u2.followers.first().username, 'john')

        u1.unfollow(u2)
        db.session.commit()
        self.assertFalse(u1.is_following(u2))
        self.assertEqual(u1.followed.count(), 0)
        self.assertEqual(u2.followers.count(), 0)
Beispiel #14
0
    def test_follow(self):
        u1 = User(username='******', email='*****@*****.**')
        u2 = User(username='******', email='*****@*****.**')
        db.session.add(u1)
        db.session.add(u2)
        db.session.commit()
        self.assertEqual(u1.followed.all(), [])
        self.assertEqual(u1.followers.all(), [])

        u1.follow(u2)
        db.session.commit()
        self.assertTrue(u1.is_following(u2))
        self.assertEqual(u1.followed.count(), 1)
        self.assertEqual(u1.followed.first().username, 'test2')
        self.assertEqual(u2.followers.count(), 1)
        self.assertEqual(u2.followers.first().username, 'test1')

        u1.unfollow(u2)
        db.session.commit()
        self.assertFalse(u1.is_following(u2))
        self.assertEqual(u1.followed.count(), 0)
        self.assertEqual(u2.followers.count(), 0)
Beispiel #15
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('home'))

    form = RegistrationForm()
    if form.validate_on_submit():
        hashed_password = bcrypt.generate_password_hash(
            form.password.data).decode('utf-8')
        user = User(username=form.username.data,
                    email=form.email.data,
                    password=hashed_password)
        db.session.add(user)
        db.session.commit()
        flash(f'Your account has been created! You can now login',
              'flash_success')
        return redirect(url_for('login'))
    return render_template('register.html', form=form)
Beispiel #16
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 u1.is_following(u2) is False
     assert u1.followed.count() == 0
     assert u2.followers.count() == 0
Beispiel #17
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('main.home'))

    form = RegistrationForm()
    if form.validate_on_submit():
        hashed_pw = bcrypt.generate_password_hash(
            form.password.data).decode('utf-8')
        user = User(username=form.username.data,
                    email=form.email.data,
                    password=hashed_pw)
        db.session.add(user)
        db.session.commit()
        flash(f'Account created for {form.username.data}. Please log in.',
              'success')
        return redirect(url_for('users.login'))

    return render_template("register.html", title='Register', form=form)
Beispiel #18
0
def reset_token(token):
    if current_user.is_authenticated:
        return redirect(url_for('main.home'))
    user = User.verify_reset_token(token)
    if user is None:
        flash('That is an invalid or expired token', 'warning')
        return redirect(url_for('users.reset_request'))
    form = ResetPasswordForm()
    if form.validate_on_submit():
        hashed_password = bcrypt.generate_password_hash(
            form.password.data).decode('utf-8')
        user.password = hashed_password
        db.session.commit()
        flash('Your password has been updated! You are now able to log in',
              'success')
        return redirect(url_for('main.login'))
    return render_template('reset_token.html',
                           title='Reset Password',
                           form=form)
Beispiel #19
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) == None
     u = u1.follow(u2)
     db.session.add(u)
     db.session.commit()
     assert u1.follow(u2) == 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 != None
     db.session.add(u)
     db.session.commit()
     assert u1.is_following(u2) == False
     assert u1.followed.count() == 0
     assert u2.followers.count() == 0
Beispiel #20
0
def verify_token(token):
    g.current_user = User.check_token(token) if token else None
    return g.current_user is not None
Beispiel #21
0
def verify_token(token):
    return User.check_token(token) if token else None
Beispiel #22
0
    def test_follow_post(self):
        # Create four users:
        u1 = User(username='******', email='*****@*****.**')
        u2 = User(username='******', email='*****@*****.**')
        u3 = User(username='******', email='*****@*****.**')
        u4 = User(username='******', email='*****@*****.**')
        db.session.add_all([u1, u2, u3, u4])

        # Create four posts:
        now = datetime.utcnow()
        p1 = Post(body='post from test1',
                  author=u1,
                  timestamp=now + timedelta(seconds=1))
        p2 = Post(body='post from test2',
                  author=u2,
                  timestamp=now + timedelta(seconds=4))
        p3 = Post(body='post from test3',
                  author=u3,
                  timestamp=now + timedelta(seconds=3))
        p4 = Post(body='post from test4',
                  author=u4,
                  timestamp=now + timedelta(seconds=2))
        db.session.add_all([p1, p2, p3, p4])
        db.session.commit()

        # Setup the followers:
        u1.follow(u2)  # 'test1' follows 'test2'
        u1.follow(u4)  # 'test1' follows 'test4'
        u2.follow(u3)  # 'test2' follows 'test3'
        u3.follow(u4)  # 'test3' follows 'test4'
        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()
        self.assertEqual(f1, [p2, p4, p1])
        self.assertEqual(f2, [p2, p3])
        self.assertEqual(f3, [p3, p4])
        self.assertEqual(f4, [p4])
Beispiel #23
0
 def test_avatar(self):
     u = User(username='******', email='*****@*****.**')
     self.assertEqual(u.avatar(128), ('https://www.gravatar.com/avatar/'
                                      '93bb94201b62f74f4cc21109a8fe29bf'
                                      '?d=identicon&s=128'))
Beispiel #24
0
 def test_password_hashing(self):
     u = User(username='******')
     u.set_password('test')
     self.assertFalse(u.check_password('dog'))
     self.assertTrue(u.check_password('test'))
Beispiel #25
0
 def test_avatar(self):
     u = User(nickname='TestUser', email='*****@*****.**')
     avatar = u.avatar(128)
     expected = 'http://www.gravatar.com/avatar/93942e96f5acd83e2e047ad8fe03114d?d=identicon&s=128'
     assert avatar[0:len(expected)] == expected
Beispiel #26
0
 def test_avatar(self):
     u = User(nickname='john', email='*****@*****.**')
     avatar = u.avatar(50)
     expected = 'http://www.gravatar.com/avatar/' \
                'd4c74594d841139328695756648b6bd'
     assert avatar[0:len(expected)] == expected
Beispiel #27
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 #28
0
    def test_follow_posts(self):
        # create four users
        u1 = User(username='******', email='*****@*****.**')
        u2 = User(username='******', email='*****@*****.**')
        u3 = User(username='******', email='*****@*****.**')
        u4 = User(username='******', email='*****@*****.**')
        db.session.add_all([u1, u2, u3, u4])

        # create four posts
        now = datetime.utcnow()
        p1 = Post(body="post from john",
                  author=u1,
                  timestamp=now + timedelta(seconds=1))
        p2 = Post(body="post from susan",
                  author=u2,
                  timestamp=now + timedelta(seconds=4))
        p3 = Post(body="post from mary",
                  author=u3,
                  timestamp=now + timedelta(seconds=3))
        p4 = Post(body="post from david",
                  author=u4,
                  timestamp=now + timedelta(seconds=2))
        db.session.add_all([p1, p2, p3, p4])
        db.session.commit()

        # setup the followers
        u1.follow(u2)  # john follows susan
        u1.follow(u4)  # john follows david
        u2.follow(u3)  # susan follows mary
        u3.follow(u4)  # mary follows david
        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()
        self.assertEqual(f1, [p2, p4, p1])
        self.assertEqual(f2, [p2, p3])
        self.assertEqual(f3, [p3, p4])
        self.assertEqual(f4, [p4])
Beispiel #29
0
 def test_avatar(self):
     u = User(username='******', email='*****@*****.**')
     self.assertEqual(u.avatar(128), ('https://www.gravatar.com/avatar/'
                                      'd4c74594d841139328695756648b6bd6'
                                      '?d=identicon&s=128'))