Add persistent default temp directory setting with web UI
- Add settings.json persistence (load/save) in backend - Add GET/POST /api/settings endpoints for default_temp_dir - Add Default Temp Directory config UI in Temporary Storage section - Auto-fallback: jobs use saved default if no per-job temp_dir set - Per-job Advanced Options placeholder syncs with saved default - Add settings.json to .gitignore for per-machine config
This commit is contained in:
+51
-2
@@ -86,6 +86,29 @@ main_loop = None
|
||||
|
||||
JOBS_FILE = os.path.join(upscaler.BASE_DIR, "jobs.json")
|
||||
|
||||
SETTINGS_FILE = os.path.join(upscaler.BASE_DIR, "settings.json")
|
||||
|
||||
def load_settings() -> dict:
|
||||
"""Load persistent app settings from settings.json"""
|
||||
defaults = {"default_temp_dir": ""}
|
||||
if os.path.exists(SETTINGS_FILE):
|
||||
try:
|
||||
with open(SETTINGS_FILE, "r") as f:
|
||||
saved = json.load(f)
|
||||
defaults.update(saved)
|
||||
except Exception as e:
|
||||
print(f"Error loading settings: {e}")
|
||||
return defaults
|
||||
|
||||
def save_settings(settings: dict):
|
||||
"""Save persistent app settings to settings.json"""
|
||||
try:
|
||||
with open(SETTINGS_FILE, "w") as f:
|
||||
json.dump(settings, f, indent=4)
|
||||
except Exception as e:
|
||||
print(f"Error saving settings: {e}")
|
||||
|
||||
|
||||
def load_jobs_db():
|
||||
global jobs_db
|
||||
if os.path.exists(JOBS_FILE):
|
||||
@@ -452,7 +475,7 @@ def start_upscale(req: StartUpscaleRequest):
|
||||
ai_face_restoration=req.ai_face_restoration,
|
||||
ai_rife_interpolation=req.ai_rife_interpolation,
|
||||
ai_audio_denoise=req.ai_audio_denoise,
|
||||
temp_dir=req.temp_dir
|
||||
temp_dir=req.temp_dir or load_settings().get("default_temp_dir") or None
|
||||
)
|
||||
|
||||
jobs_db[job_id] = job
|
||||
@@ -527,7 +550,7 @@ def start_upscale_batch(req: StartBatchUpscaleRequest):
|
||||
ai_face_restoration=req.ai_face_restoration,
|
||||
ai_rife_interpolation=req.ai_rife_interpolation,
|
||||
ai_audio_denoise=req.ai_audio_denoise,
|
||||
temp_dir=req.temp_dir
|
||||
temp_dir=req.temp_dir or load_settings().get("default_temp_dir") or None
|
||||
)
|
||||
jobs_db[job_id] = job
|
||||
job_queue.put(job_id)
|
||||
@@ -1064,6 +1087,32 @@ def setup_webhook(req: WebhookSetupRequest):
|
||||
global_webhook_url = req.url
|
||||
return {"status": "success", "webhook_url": global_webhook_url}
|
||||
|
||||
# ─── Settings Endpoints ─────────────────────────────────────────────
|
||||
class UpdateSettingsRequest(BaseModel):
|
||||
default_temp_dir: str = ""
|
||||
|
||||
@app.get("/api/settings")
|
||||
def get_settings():
|
||||
"""Get persistent app settings"""
|
||||
settings = load_settings()
|
||||
return settings
|
||||
|
||||
@app.post("/api/settings")
|
||||
def update_settings(req: UpdateSettingsRequest):
|
||||
"""Update persistent app settings"""
|
||||
settings = load_settings()
|
||||
# Validate the directory path if provided
|
||||
new_dir = req.default_temp_dir.strip()
|
||||
if new_dir:
|
||||
# Ensure the parent directory exists or can be created
|
||||
try:
|
||||
os.makedirs(new_dir, exist_ok=True)
|
||||
except OSError as e:
|
||||
raise HTTPException(status_code=400, detail=f"Invalid directory path: {e}")
|
||||
settings["default_temp_dir"] = new_dir
|
||||
save_settings(settings)
|
||||
return {"status": "saved", "settings": settings}
|
||||
|
||||
@app.get("/api/uploads/{filename}")
|
||||
def get_upload_file(filename: str):
|
||||
file_path = os.path.join(upscaler.UPLOAD_DIR, filename)
|
||||
|
||||
Reference in New Issue
Block a user