From bdf244a5f209e4403a36d92257abb0b83c465972 Mon Sep 17 00:00:00 2001 From: Dmitriy Kharavets Date: Wed, 2 Oct 2019 01:37:38 +0300 Subject: [PATCH] Added AJAX support. --- app/core/views.py | 69 ++++++++++++++++++++++++++++++++++------- app/templates/base.html | 4 ++- app/templates/user.html | 46 +++++++++++++++++++++++++-- 3 files changed, 103 insertions(+), 16 deletions(-) diff --git a/app/core/views.py b/app/core/views.py index 6548fb3..980718f 100644 --- a/app/core/views.py +++ b/app/core/views.py @@ -1,3 +1,4 @@ +from flask import json, Response from datetime import datetime from flask import render_template, flash, redirect, \ url_for, request, current_app @@ -87,26 +88,70 @@ def edit_profile(): def follow(username): user = User.query.filter_by(username=username).first() if not user: - flash("User not found") - return redirect(url_for("core.index")) + response = Response( + response=json.dumps({ + 'error': 'User not found' + }), + status=502, + mimetype='application/json' + ) + return response + if user == current_user: - flash("You can't follow yourself") - return redirect(url_for('core.user', username=username)) + response = Response( + response=json.dumps({ + 'error': "You can't follow yourself" + }), + status=502, + mimetype='application/json' + ) + return response + current_user.follow(user) db.session.commit() - flash(f"You are following {username}!") - return redirect(url_for("core.user", username=username)) + + response = Response( + response=json.dumps({ + 'error': "" + }), + status=200, + mimetype='application/json' + ) + + return response @bp.route('/unfollow/') def unfollow(username): user = User.query.filter_by(username=username).first() if not user: - flash("User not found") - return redirect(url_for("core.index")) + response = Response( + response=json.dumps({ + 'error': 'User not found' + }), + status=502, + mimetype='application/json' + ) + return response + if user == current_user: - flash("You can unfollow yourself") - return redirect(url_for("core.user", username=username)) + response = Response( + response=json.dumps({ + 'error': "You can't unfollow yourself" + }), + status=502, + mimetype='application/json' + ) + return response + current_user.unfollow(user) db.session.commit() - flash(f"You unfollowed {username}") - return redirect(url_for('core.user', username=username)) \ No newline at end of file + + response = Response( + response=json.dumps({ + 'error': "" + }), + status=200, + mimetype='application/json' + ) + + return response diff --git a/app/templates/base.html b/app/templates/base.html index 1aa44de..f059f1a 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -54,6 +54,8 @@ {{ moment.include_moment() }} \ No newline at end of file diff --git a/app/templates/user.html b/app/templates/user.html index 962f7fd..07b2785 100644 --- a/app/templates/user.html +++ b/app/templates/user.html @@ -1,7 +1,7 @@ {% extends "base.html" %} {% block content %} - +
@@ -29,4 +29,44 @@

User: {{ user.username }}

{% if next_url %} Older Posts {% endif %} + + {% endblock %} \ No newline at end of file
@@ -12,9 +12,9 @@

User: {{ user.username }}

{% if user == current_user %}

Edit Profile

{% elif current_user.is_following(user) %} -

Unfollow

+

{% else %} -

Follow

+

{% endif %}