+@app.route('/follow/<nickname>')
+@login_required
+def follow(nickname):
+ user = User.query.filter_by(nickname=nickname).first()
+ if user is None:
+ flash('User %s not found.' % nickname)
+ return redirect(url_for('index'))
+ if user == g.user:
+ flash('You can\'t follow yourself!')
+ return redirect(url_for('user', nickname=nickname))
+ u = g.user.follow(user)
+ if u is None:
+ flash('Cannot follow ' + nickname + '.')
+ return redirect(url_for('user', nickname=nickname))
+ db.session.add(u)
+ db.session.commit()
+ flash('You are now following ' + nickname + '!')
+ follower_notification(user, g.user)
+ return redirect(url_for('user', nickname=nickname))
+
+@app.route('/unfollow/<nickname>')
+@login_required
+def unfollow(nickname):
+ user = User.query.filter_by(nickname=nickname).first()
+ if user is None:
+ flash('User %s not found.' % nickname)
+ 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))
+
+@app.route('/delete/<int:id>')
+@login_required
+def delete(id):
+ post = Post.query.get(id)
+ if post is None:
+ flash('Post not found.')
+ return redirect(url_for('index'))
+ if post.author.id != g.user.id:
+ flash('You cannot delete this post.')
+ return redirect(url_for('index'))
+ db.session.delete(post)
+ db.session.commit()
+ flash('Your post has been deleted.')
+ return redirect(url_for('index'))
+