85 lines
2.1 KiB
Python
85 lines
2.1 KiB
Python
import json
|
|
from pathlib import Path
|
|
|
|
DEFAULT_INGEST_ROOT = "/mnt/data/shared/scans/processed"
|
|
SETTINGS_FILE = Path("/mnt/storage/document-processor/settings/ingest.json")
|
|
|
|
|
|
def _ensure_parent() -> None:
|
|
SETTINGS_FILE.parent.mkdir(parents=True, exist_ok=True)
|
|
|
|
|
|
def get_default_ingest_root() -> str:
|
|
try:
|
|
if SETTINGS_FILE.exists():
|
|
data = json.loads(SETTINGS_FILE.read_text())
|
|
value = str(data.get("default_ingest_root") or "").strip()
|
|
if value:
|
|
return value
|
|
except Exception:
|
|
pass
|
|
return DEFAULT_INGEST_ROOT
|
|
|
|
|
|
def set_default_ingest_root(path_str: str) -> str:
|
|
value = str(path_str or "").strip()
|
|
if not value:
|
|
value = DEFAULT_INGEST_ROOT
|
|
|
|
_ensure_parent()
|
|
SETTINGS_FILE.write_text(json.dumps({"default_ingest_root": value}, indent=2))
|
|
return value
|
|
|
|
|
|
def reset_default_ingest_root() -> str:
|
|
_ensure_parent()
|
|
SETTINGS_FILE.write_text(json.dumps({"default_ingest_root": DEFAULT_INGEST_ROOT}, indent=2))
|
|
return DEFAULT_INGEST_ROOT
|
|
|
|
|
|
def browse_directory(path_str: str) -> dict:
|
|
target = Path(path_str).expanduser().resolve()
|
|
|
|
result = {
|
|
"path": str(target),
|
|
"exists": target.exists(),
|
|
"is_dir": target.is_dir(),
|
|
"parent": "",
|
|
"entries": [],
|
|
"error": "",
|
|
}
|
|
|
|
if not target.exists():
|
|
result["error"] = "Directory does not exist."
|
|
return result
|
|
|
|
if not target.is_dir():
|
|
result["error"] = "Path is not a directory."
|
|
return result
|
|
|
|
parent = target.parent
|
|
if parent != target:
|
|
result["parent"] = str(parent)
|
|
|
|
try:
|
|
children = sorted(
|
|
list(target.iterdir()),
|
|
key=lambda p: (not p.is_dir(), p.name.lower()),
|
|
)
|
|
except Exception as exc:
|
|
result["error"] = f"Could not read directory: {exc}"
|
|
return result
|
|
|
|
entries = []
|
|
for child in children[:300]:
|
|
entries.append(
|
|
{
|
|
"name": child.name,
|
|
"path": str(child),
|
|
"is_dir": child.is_dir(),
|
|
}
|
|
)
|
|
|
|
result["entries"] = entries
|
|
return result
|