v1.4.0: fix #43, #31, #29, #49, #33 + shared templating

This commit is contained in:
2026-05-20 20:08:25 +03:00
parent ca4d00c895
commit 64991f0228
63 changed files with 5005 additions and 45 deletions
+30 -4
View File
@@ -36,10 +36,29 @@ def discover_docs() -> dict:
"filename": filename,
"sort_order": len(perms),
"permissions": {
"engineer": {"view": False, "edit": False, "cancel": False}
"engineer": {"view": False, "edit": False, "cancel": False},
"technician": {"view": False},
},
}
save_permissions(perms)
# migrate existing entries missing technician key
changed = False
for slug, doc in perms.items():
if "permissions" not in doc:
doc["permissions"] = {}
perms_doc = doc["permissions"]
if "technician" not in perms_doc:
perms_doc["technician"] = {"view": False}
changed = True
# ensure engineer has edit/cancel defaults
eng = perms_doc.setdefault("engineer", {})
if "edit" not in eng:
eng["edit"] = False
changed = True
if "cancel" not in eng:
eng["cancel"] = False
changed = True
if changed:
save_permissions(perms)
return perms
@@ -52,14 +71,21 @@ def get_allowed_docs(role: str) -> list[dict]:
doc for doc in perms.values()
if doc.get("permissions", {}).get("engineer", {}).get("view", False)
]
if role == "technician":
return [
doc for doc in perms.values()
if doc.get("permissions", {}).get("technician", {}).get("view", False)
]
return []
def can_access_doc(role: str, slug: str, action: str = "view") -> bool:
if role == "owner":
return True
perms = load_permissions()
doc = perms.get(slug, {})
if role == "engineer":
perms = load_permissions()
doc = perms.get(slug, {})
return doc.get("permissions", {}).get("engineer", {}).get(action, False)
if role == "technician":
return doc.get("permissions", {}).get("technician", {}).get("view", False)
return False