mirror of
https://github.com/fromchat-messenger/web.git
synced 2026-09-23 03:25:07 +03:00
Implement legal terms, Android client compatibility and more
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
"""Server-side verification status computation."""
|
||||
|
||||
from enum import Enum
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from .models import User
|
||||
from .similarity import is_user_similar_to_verified
|
||||
|
||||
|
||||
class VerificationStatus(str, Enum):
|
||||
VERIFIED = "verified"
|
||||
WARNING = "warning"
|
||||
BLOCKED = "blocked"
|
||||
NONE = "none"
|
||||
|
||||
|
||||
def get_verified_users_data(db: Session) -> list[dict[str, str]]:
|
||||
verified_users = (
|
||||
db.query(User)
|
||||
.filter(
|
||||
User.verified.is_(True),
|
||||
User.deleted.is_(False),
|
||||
User.suspended.is_(False),
|
||||
)
|
||||
.all()
|
||||
)
|
||||
return [
|
||||
{"username": user.username, "display_name": user.display_name}
|
||||
for user in verified_users
|
||||
]
|
||||
|
||||
|
||||
def compute_verification_status(
|
||||
user: User,
|
||||
verified_users_data: list[dict[str, str]],
|
||||
) -> VerificationStatus:
|
||||
if user.deleted:
|
||||
return VerificationStatus.NONE
|
||||
if user.suspended:
|
||||
return VerificationStatus.BLOCKED
|
||||
if user.verified:
|
||||
return VerificationStatus.VERIFIED
|
||||
|
||||
is_similar, _ = is_user_similar_to_verified(
|
||||
user.username,
|
||||
user.display_name,
|
||||
verified_users_data,
|
||||
)
|
||||
return VerificationStatus.WARNING if is_similar else VerificationStatus.NONE
|
||||
Reference in New Issue
Block a user