Make suspended accounts look like deleted

This commit is contained in:
2025-11-18 18:57:10 +03:00
Unverified
parent fd5cc7457c
commit d75baedf36
3 changed files with 27 additions and 10 deletions
+1 -1
View File
@@ -53,7 +53,7 @@ def convert_user(user: User) -> dict:
"verified": user.verified, "verified": user.verified,
"suspended": user.suspended or False, "suspended": user.suspended or False,
"suspension_reason": user.suspension_reason, "suspension_reason": user.suspension_reason,
"deleted": user.deleted or False "deleted": (user.deleted or user.suspended) or False # Treat suspended as deleted
} }
@router.get("/check_auth") @router.get("/check_auth")
+4 -4
View File
@@ -164,8 +164,8 @@ def convert_message(msg: Message) -> dict:
"username": reaction.user.display_name "username": reaction.user.display_name
}) })
# Handle deleted users # Handle deleted or suspended users
if msg.author.deleted: if msg.author.deleted or msg.author.suspended:
username = f"Deleted User #{msg.author.id}" username = f"Deleted User #{msg.author.id}"
profile_picture = None profile_picture = None
verified = False verified = False
@@ -222,8 +222,8 @@ def convert_dm_envelope(envelope: DMEnvelope) -> dict:
db = next(get_db()) db = next(get_db())
sender = db.query(User).filter(User.id == envelope.sender_id).first() sender = db.query(User).filter(User.id == envelope.sender_id).first()
# Handle deleted users # Handle deleted or suspended users
if sender and sender.deleted: if sender and (sender.deleted or sender.suspended):
sender_verified = False sender_verified = False
else: else:
sender_verified = sender.verified if sender else False sender_verified = sender.verified if sender else False
+22 -5
View File
@@ -131,7 +131,7 @@ async def get_user_profile(
verified=current_user.verified, verified=current_user.verified,
suspended=current_user.suspended or False, suspended=current_user.suspended or False,
suspension_reason=current_user.suspension_reason, suspension_reason=current_user.suspension_reason,
deleted=current_user.deleted or False, deleted=(current_user.deleted or current_user.suspended) or False, # Treat suspended as deleted
) )
@@ -160,7 +160,7 @@ async def list_users(
verified=user.verified, verified=user.verified,
suspended=user.suspended or False, suspended=user.suspended or False,
suspension_reason=user.suspension_reason, suspension_reason=user.suspension_reason,
deleted=user.deleted or False, deleted=(user.deleted or user.suspended) or False, # Treat suspended as deleted
).model_dump() ).model_dump()
for user in users for user in users
] ]
@@ -282,6 +282,23 @@ async def get_user_by_username(
_ensure_owner_unsuspended(user, db) _ensure_owner_unsuspended(user, db)
# Handle deleted or suspended users
if user.deleted or user.suspended:
return UserProfileResponse(
id=user.id,
username="deleted",
display_name="Deleted User",
profile_picture=None,
bio=None,
online=False,
last_seen=None, # Clear last seen timestamp
created_at=None, # Clear member since timestamp
verified=False,
suspended=False,
suspension_reason=None,
deleted=True
)
return UserProfileResponse( return UserProfileResponse(
id=user.id, id=user.id,
username=user.username, username=user.username,
@@ -294,7 +311,7 @@ async def get_user_by_username(
verified=user.verified, verified=user.verified,
suspended=user.suspended or False, suspended=user.suspended or False,
suspension_reason=user.suspension_reason, suspension_reason=user.suspension_reason,
deleted=user.deleted or False, deleted=(user.deleted or user.suspended) or False, # Treat suspended as deleted
) )
@router.get("/user/id/{user_id}") @router.get("/user/id/{user_id}")
@@ -312,8 +329,8 @@ async def get_user_by_id(
_ensure_owner_unsuspended(user, db) _ensure_owner_unsuspended(user, db)
# Handle deleted users # Handle deleted or suspended users
if user.deleted: if user.deleted or user.suspended:
return UserProfileResponse( return UserProfileResponse(
id=user.id, id=user.id,
username="deleted", username="deleted",