Add Doris Kitchen household recipe app
This commit is contained in:
45
home/doris-kitchen/app/routes/api_profile.py
Normal file
45
home/doris-kitchen/app/routes/api_profile.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from fastapi import APIRouter, HTTPException, Request
|
||||
|
||||
from app.services.repository import repo
|
||||
|
||||
|
||||
router = APIRouter(prefix="/api/profile", tags=["profile"])
|
||||
|
||||
|
||||
@router.get("")
|
||||
async def get_profile():
|
||||
return {"profile": repo.get_profile(), "backend": repo.backend}
|
||||
|
||||
|
||||
@router.post("/blacklist")
|
||||
async def update_blacklist(request: Request):
|
||||
payload = await request.json()
|
||||
name = str(payload.get("name") or "").strip().lower()
|
||||
enabled = bool(payload.get("enabled", True))
|
||||
if not name:
|
||||
raise HTTPException(status_code=400, detail="Ingredient or term is required.")
|
||||
profile = repo.get_profile()
|
||||
items = list(profile.get("soft_blacklist") or [])
|
||||
existing = next((item for item in items if str(item.get("name") or "").strip().lower() == name), None)
|
||||
if existing:
|
||||
existing["enabled"] = enabled
|
||||
else:
|
||||
items.append({"name": name, "enabled": enabled})
|
||||
profile["soft_blacklist"] = sorted(items, key=lambda item: str(item.get("name") or ""))
|
||||
repo.save_profile(profile)
|
||||
return {"status": "ok", "profile": profile}
|
||||
|
||||
|
||||
@router.post("/settings")
|
||||
async def update_settings(request: Request):
|
||||
payload = await request.json()
|
||||
profile = repo.get_profile()
|
||||
if "notes" in payload:
|
||||
profile["notes"] = str(payload.get("notes") or "")
|
||||
if "auto_import_threshold" in payload:
|
||||
profile["auto_import_threshold"] = max(50, min(100, int(payload["auto_import_threshold"])))
|
||||
if "auto_import_enabled" in payload:
|
||||
profile["auto_import_enabled"] = bool(payload["auto_import_enabled"])
|
||||
repo.save_profile(profile)
|
||||
return {"status": "ok", "profile": profile}
|
||||
|
||||
Reference in New Issue
Block a user