fft/routes/f_friends.py

66 lines
1.9 KiB
Python
Raw Normal View History

from globals import Db, api, config # GLOBAL_IMPORT
from routes.helpers import (
auth_required,
create_users,
)
from flask import Blueprint
2023-07-27 14:46:55 +02:00
app = Blueprint("friends", __name__, template_folder="templates")
2023-07-27 14:46:55 +02:00
@app.route("/friends/add/<add>")
2023-07-27 14:46:55 +02:00
@auth_required
def add_friend(add, userid):
db = Db(config.db_path)
friends = add.split(",")
2025-01-14 21:22:17 +01:00
failed_friends = []
for friend in friends:
friend = friend.strip().lower()
if len(friend) < 3:
2025-01-14 21:22:17 +01:00
failed_friends.append(friend)
continue
add_id = db.get_user(friend)
if add_id is None:
status, resp = api.get_unknown_user(friend)
if status == 200:
create_users(db, [{"user": resp}])
else:
2025-01-14 21:22:17 +01:00
val = db.get_user_profile(friend, api)
2025-01-14 17:24:26 +01:00
if val:
2025-01-14 21:22:17 +01:00
resp = {"id": val["id"]}
2025-01-14 17:24:26 +01:00
else:
2025-01-14 21:22:17 +01:00
failed_friends.append(friend)
continue
add_id = {"id": resp["id"]}
if not db.add_friend(userid["userid"], add_id["id"]):
2025-01-14 21:22:17 +01:00
failed_friends.append(friend)
db.close()
2025-01-14 21:22:17 +01:00
if len(failed_friends):
2025-01-15 20:28:56 +01:00
return f"failed_friends: {', '.join(failed_friends)}", 404
2025-01-14 21:22:17 +01:00
return "Ok", 200
2023-07-27 14:46:55 +02:00
@app.route("/friends/remove/<remove>")
2023-07-27 14:46:55 +02:00
@auth_required
def remove_friend(remove, userid):
db = Db(config.db_path)
remove_id = db.get_user(remove)
if remove_id is None:
return "", 404
success = db.remove_friend(userid["userid"], remove_id["id"])
db.close()
return "", 200 if success else 404
2023-07-27 14:46:55 +02:00
@app.route("/friends/set_relation/<who>/<int:relation>")
2023-07-27 14:46:55 +02:00
@auth_required
def set_relation(who, relation, userid):
db = Db(config.db_path)
who_id = db.get_user(who)
if who_id is None:
db.close()
return "", 404
success = db.set_relation(userid["userid"], who_id["id"], int(relation))
db.close()
return "", 200 if success else 500