Esempio n. 1
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(_('Congratulations, you are now a registered user!'))
        return redirect(url_for('auth.login'))
    return render_template('auth/register.html', title=_('Register'), form=form)
Esempio n. 2
0
def create_user():
    data = request.get_json() or {}
    # if not ('username' in data and 'email' in data and 'password' in data):
    # if any('username' not in data, 'email' not in data, 'password' not in data):
    if not set(('username', 'email', 'password')).issubset(data.keys()):
        return bad_request('must include username, email, password')
    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')
    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
Esempio n. 3
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)
Esempio n. 4
0
    def test_follow(self):
        u1 = User(username='******')
        u2 = User(username='******')
        db.session.add_all([u1, u2])
        db.session.commit()
        self.assertEqual(u1.followed.all(), [])
        self.assertEqual(u2.followed.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, 'john')
        self.assertEqual(u2.followers.count(), 1)
        self.assertEqual(u2.followers.first(), u1)

        u1.unfollow(u2)
        db.session.commit()
        self.assertFalse(u1.is_following(u2))
        self.assertEqual(u1.followed.count(), 0)
        self.assertEqual(u2.followers.count(), 0)
Esempio n. 5
0
    def test_follow_posts(self):
        u1 = User(username='******')
        u2 = User(username='******')
        u3 = User(username='******')
        u4 = User(username='******')
        db.session.add_all([u1, u2, u3, u4])

        now = datetime.utcnow()
        p1 = Post(body='from john',
                  author=u1,
                  timestamp=now + timedelta(seconds=1))
        p2 = Post(body='from susan',
                  author=u2,
                  timestamp=now + timedelta(seconds=5))
        p3 = Post(body='from mary',
                  author=u3,
                  timestamp=now - timedelta(seconds=2))
        p4 = Post(body='from david',
                  author=u4,
                  timestamp=now + timedelta(seconds=3))
        db.session.add_all([p1, p2, p3, p4])
        db.session.commit()

        u1.follow(u2)
        u1.follow(u4)
        u2.follow(u3)
        u3.follow(u4)
        db.session.commit()

        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, [p4, p3])
        self.assertEqual(f4, [p4])
Esempio n. 6
0
 def test_avatar(self):
     user = User(username='******', email='*****@*****.**')
     self.assertEqual(
         user.avatar(128),
         'https://www.gravatar.com/avatar/413037053242e90ce350577b0eb66db7?d=identicon&s=128'
     )
Esempio n. 7
0
 def test_password_hashing(self):
     user = User(username='******')
     user.set_password('cat')
     self.assertTrue(user.check_password('cat'))
     self.assertFalse(user.check_password('dog'))
Esempio n. 8
0
def get_users():
    page = request.args.get('page', 1, type=int)
    per_page = min(request.args.get('per_page', 10, type=int), 100)
    endpoint = 'api.get_users'
    data = User.to_collection_dict(User.query, page, per_page, endpoint)
    return jsonify(data)
Esempio n. 9
0
def verify_token(token):
    g.current_user = User.check_token(token) if token else None
    return g.current_user is not None