PATCH: Fixed a load of broken user routes

This commit is contained in:
2025-02-06 17:25:25 +00:00
parent 00d627a1e2
commit c0ddca85ba
5 changed files with 33 additions and 26 deletions

View File

@@ -52,23 +52,28 @@ def user_following(user_id: int, followed_id: int):
@login_required @login_required
@user_bp.route('/user/follow/<string:username>') @user_bp.route('/user/follow/<string:username>')
def follow(username): def follow_user(username):
""" """
Follows a user Follows a user
""" """
user_id = session.get("user_id") user_id = session.get("user_id")
following_id = get_user_id(username) following_id = get_user_id(username)
follow(user_id, following_id) if follow(user_id, following_id):
return jsonify({"success": True,
"already_following": False})
return jsonify({"success": True,
"already_following": True})
@login_required @login_required
@user_bp.route('/user/unfollow/<string:username>') @user_bp.route('/user/unfollow/<string:username>')
def user_unfollow(followed_username): def unfollow_user(username):
""" """
Unfollows a user Unfollows a user
""" """
user_id = session.get("user_id") user_id = session.get("user_id")
followed_id = get_user_id(followed_username) followed_id = get_user_id(username)
unfollow(user_id, followed_id) unfollow(user_id, followed_id)
return jsonify({"success": True})
@login_required @login_required
@user_bp.route('/user/following') @user_bp.route('/user/following')
@@ -88,7 +93,10 @@ def get_login_status():
Returns whether the user is logged in or not Returns whether the user is logged in or not
""" """
username = session.get("username") username = session.get("username")
return jsonify({'status': username is not None, 'username': username}) user_id = session.get("user_id")
return jsonify({'status': username is not None,
'username': username,
'user_id': user_id})
@user_bp.route('/user/forgot_password/<string:email>', methods=['GET','POST']) @user_bp.route('/user/forgot_password/<string:email>', methods=['GET','POST'])
def user_forgot_password(email): def user_forgot_password(email):

Binary file not shown.

View File

@@ -124,9 +124,7 @@ LIMIT 10;
INSERT INTO follows (user_id, followed_id, since) VALUES INSERT INTO follows (user_id, followed_id, since) VALUES
(7, 1, '2024-08-30'), (7, 1, '2024-08-30'),
(7, 2, '2024-08-30'), (7, 2, '2024-08-30'),
(7, 3, '2024-08-30'), (7, 3, '2024-08-30');
(7, 4, '2024-08-30'),
(7, 5, '2024-08-30');
INSERT INTO followed_categories (user_id, category_id) VALUES INSERT INTO followed_categories (user_id, category_id) VALUES
(7, 1), (7, 1),
@@ -134,5 +132,5 @@ INSERT INTO followed_categories (user_id, category_id) VALUES
(7, 3); (7, 3);
INSERT INTO subscribes (user_id, subscribed_id, since, expires) VALUES INSERT INTO subscribes (user_id, subscribed_id, since, expires) VALUES
(7, 1, '2024-08-30', '2025-02-28'), (7, 1, '2024-08-30', '2025-02-28 12:00:00'),
(7, 2, '2024-08-30', '2025-02-15'); (7, 2, '2024-08-30', '2025-02-15');

View File

@@ -27,3 +27,4 @@ gevent-websocket
flask-oauthlib==0.9.6 flask-oauthlib==0.9.6
celery==5.2.3 celery==5.2.3
redis==5.2.1 redis==5.2.1
python-dateutil

View File

@@ -4,6 +4,7 @@ from datetime import datetime
from itsdangerous import URLSafeTimedSerializer from itsdangerous import URLSafeTimedSerializer
from os import getenv from os import getenv
from werkzeug.security import generate_password_hash, check_password_hash from werkzeug.security import generate_password_hash, check_password_hash
from dateutil import parser
from dotenv import load_dotenv from dotenv import load_dotenv
load_dotenv() load_dotenv()
@@ -91,29 +92,28 @@ def follow(user_id: int, following_id: int):
""" """
Follows following_id user from user_id user Follows following_id user from user_id user
""" """
if not is_following(user_id, following_id):
with Database() as db: with Database() as db:
data = db.execute("""
SELECT * FROM follows
WHERE user_id = ?
AND followed_id = ?
""", (user_id, following_id))
if not data:
db.execute(""" db.execute("""
INSERT INTO follows (user_id, followed_id) INSERT INTO follows (user_id, followed_id)
VALUES(?,?) VALUES(?,?);
""", (user_id, following_id)) """, (user_id, following_id))
return True
return False
def unfollow(user_id: int, followed_id: int): def unfollow(user_id: int, followed_id: int):
""" """
Unfollows follow_id user from user_id user Unfollows follow_id user from user_id user
""" """
if is_following(user_id, followed_id):
with Database() as db: with Database() as db:
db.execute(""" db.execute("""
DELETE FROM follows DELETE FROM follows
WHERE user_id = ? WHERE user_id = ?
AND followed_id = ? AND followed_id = ?
""", (user_id, followed_id)) """, (user_id, followed_id))
return True
return False
def subscription_expiration(user_id: int, subscribed_id: int) -> int: def subscription_expiration(user_id: int, subscribed_id: int) -> int:
@@ -131,7 +131,7 @@ def subscription_expiration(user_id: int, subscribed_id: int) -> int:
if data: if data:
expiration_date = data["expires"] expiration_date = data["expires"]
remaining_time = (expiration_date - datetime.now()).seconds remaining_time = (parser.parse(expiration_date) - datetime.now()).seconds
return remaining_time return remaining_time
return 0 return 0