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)
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
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)
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)
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])
def test_avatar(self): user = User(username='******', email='*****@*****.**') self.assertEqual( user.avatar(128), 'https://www.gravatar.com/avatar/413037053242e90ce350577b0eb66db7?d=identicon&s=128' )
def test_password_hashing(self): user = User(username='******') user.set_password('cat') self.assertTrue(user.check_password('cat')) self.assertFalse(user.check_password('dog'))
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)
def verify_token(token): g.current_user = User.check_token(token) if token else None return g.current_user is not None