profile id support in api requests
This commit is contained in:
@@ -728,12 +728,45 @@ def install_guards(app) -> None:
|
||||
def _request_profile_id() -> int | None:
|
||||
if request.view_args and request.view_args.get("profile_id"):
|
||||
return int(request.view_args["profile_id"])
|
||||
payload = {}
|
||||
try:
|
||||
payload = request.get_json(silent=True) or {}
|
||||
if payload.get("profile_id"):
|
||||
return int(payload.get("profile_id"))
|
||||
except Exception:
|
||||
pass
|
||||
payload = {}
|
||||
raw_id = (
|
||||
request.args.get("profile_id")
|
||||
or request.form.get("profile_id")
|
||||
or payload.get("profile_id")
|
||||
or request.headers.get("X-PyTorrent-Profile-Id")
|
||||
)
|
||||
if raw_id not in (None, ""):
|
||||
try:
|
||||
return int(raw_id)
|
||||
except (TypeError, ValueError):
|
||||
return None
|
||||
raw_name = (
|
||||
request.args.get("profile_name")
|
||||
or request.form.get("profile_name")
|
||||
or payload.get("profile_name")
|
||||
or request.headers.get("X-PyTorrent-Profile-Name")
|
||||
)
|
||||
if raw_name:
|
||||
from . import preferences
|
||||
visible = visible_profile_ids(current_user_id())
|
||||
with connect() as conn:
|
||||
if visible is None:
|
||||
row = conn.execute("SELECT id FROM rtorrent_profiles WHERE lower(name)=lower(?) ORDER BY is_default DESC, id LIMIT 1", (str(raw_name).strip(),)).fetchone()
|
||||
elif visible:
|
||||
placeholders = ",".join("?" for _ in visible)
|
||||
row = conn.execute(
|
||||
f"SELECT id FROM rtorrent_profiles WHERE id IN ({placeholders}) AND lower(name)=lower(?) ORDER BY is_default DESC, id LIMIT 1",
|
||||
(*tuple(visible), str(raw_name).strip()),
|
||||
).fetchone()
|
||||
else:
|
||||
row = None
|
||||
return int(row["id"]) if row else None
|
||||
from . import preferences
|
||||
profile = preferences.active_profile()
|
||||
return int(profile["id"]) if profile else None
|
||||
if profile:
|
||||
return int(profile["id"])
|
||||
return 1 if can_access_profile(1) else None
|
||||
|
||||
Reference in New Issue
Block a user