Build 2502262321: fix auto-search quality and per-user toggle
This commit is contained in:
@@ -149,6 +149,7 @@ def init_db() -> None:
|
||||
created_at TEXT NOT NULL,
|
||||
last_login_at TEXT,
|
||||
is_blocked INTEGER NOT NULL DEFAULT 0,
|
||||
auto_search_enabled INTEGER NOT NULL DEFAULT 1,
|
||||
jellyfin_password_hash TEXT,
|
||||
last_jellyfin_auth_at TEXT
|
||||
)
|
||||
@@ -264,6 +265,10 @@ def init_db() -> None:
|
||||
conn.execute("ALTER TABLE users ADD COLUMN jellyseerr_user_id INTEGER")
|
||||
except sqlite3.OperationalError:
|
||||
pass
|
||||
try:
|
||||
conn.execute("ALTER TABLE users ADD COLUMN auto_search_enabled INTEGER NOT NULL DEFAULT 1")
|
||||
except sqlite3.OperationalError:
|
||||
pass
|
||||
try:
|
||||
conn.execute("ALTER TABLE requests_cache ADD COLUMN requested_by_id INTEGER")
|
||||
except sqlite3.OperationalError:
|
||||
@@ -424,7 +429,7 @@ def get_user_by_username(username: str) -> Optional[Dict[str, Any]]:
|
||||
row = conn.execute(
|
||||
"""
|
||||
SELECT id, username, password_hash, role, auth_provider, jellyseerr_user_id,
|
||||
created_at, last_login_at, is_blocked, jellyfin_password_hash, last_jellyfin_auth_at
|
||||
created_at, last_login_at, is_blocked, auto_search_enabled, jellyfin_password_hash, last_jellyfin_auth_at
|
||||
FROM users
|
||||
WHERE username = ? COLLATE NOCASE
|
||||
""",
|
||||
@@ -442,8 +447,9 @@ def get_user_by_username(username: str) -> Optional[Dict[str, Any]]:
|
||||
"created_at": row[6],
|
||||
"last_login_at": row[7],
|
||||
"is_blocked": bool(row[8]),
|
||||
"jellyfin_password_hash": row[9],
|
||||
"last_jellyfin_auth_at": row[10],
|
||||
"auto_search_enabled": bool(row[9]),
|
||||
"jellyfin_password_hash": row[10],
|
||||
"last_jellyfin_auth_at": row[11],
|
||||
}
|
||||
|
||||
|
||||
@@ -452,7 +458,7 @@ def get_user_by_id(user_id: int) -> Optional[Dict[str, Any]]:
|
||||
row = conn.execute(
|
||||
"""
|
||||
SELECT id, username, password_hash, role, auth_provider, jellyseerr_user_id,
|
||||
created_at, last_login_at, is_blocked, jellyfin_password_hash, last_jellyfin_auth_at
|
||||
created_at, last_login_at, is_blocked, auto_search_enabled, jellyfin_password_hash, last_jellyfin_auth_at
|
||||
FROM users
|
||||
WHERE id = ?
|
||||
""",
|
||||
@@ -470,15 +476,16 @@ def get_user_by_id(user_id: int) -> Optional[Dict[str, Any]]:
|
||||
"created_at": row[6],
|
||||
"last_login_at": row[7],
|
||||
"is_blocked": bool(row[8]),
|
||||
"jellyfin_password_hash": row[9],
|
||||
"last_jellyfin_auth_at": row[10],
|
||||
"auto_search_enabled": bool(row[9]),
|
||||
"jellyfin_password_hash": row[10],
|
||||
"last_jellyfin_auth_at": row[11],
|
||||
}
|
||||
|
||||
def get_all_users() -> list[Dict[str, Any]]:
|
||||
with _connect() as conn:
|
||||
rows = conn.execute(
|
||||
"""
|
||||
SELECT id, username, role, auth_provider, jellyseerr_user_id, created_at, last_login_at, is_blocked
|
||||
SELECT id, username, role, auth_provider, jellyseerr_user_id, created_at, last_login_at, is_blocked, auto_search_enabled
|
||||
FROM users
|
||||
ORDER BY username COLLATE NOCASE
|
||||
"""
|
||||
@@ -495,6 +502,7 @@ def get_all_users() -> list[Dict[str, Any]]:
|
||||
"created_at": row[5],
|
||||
"last_login_at": row[6],
|
||||
"is_blocked": bool(row[7]),
|
||||
"auto_search_enabled": bool(row[8]),
|
||||
}
|
||||
)
|
||||
return results
|
||||
@@ -551,6 +559,16 @@ def set_user_role(username: str, role: str) -> None:
|
||||
)
|
||||
|
||||
|
||||
def set_user_auto_search_enabled(username: str, enabled: bool) -> None:
|
||||
with _connect() as conn:
|
||||
conn.execute(
|
||||
"""
|
||||
UPDATE users SET auto_search_enabled = ? WHERE username = ?
|
||||
""",
|
||||
(1 if enabled else 0, username),
|
||||
)
|
||||
|
||||
|
||||
def verify_user_password(username: str, password: str) -> Optional[Dict[str, Any]]:
|
||||
user = get_user_by_username(username)
|
||||
if not user:
|
||||
|
||||
Reference in New Issue
Block a user