Files
handoff-pro/scripts/signature_mgmt.py

36 lines
1.8 KiB
Python
Raw Normal View History

"""Signature management: request and record client signatures."""
import json, sys, os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
from lib.db import get_db, new_id, now, row_to_dict, rows_to_list
def request_signature(estimate_id, client_name):
sid = new_id()
conn = get_db()
conn.execute("INSERT INTO signatures (id, estimate_id, client_name) VALUES (?,?,?)",
(sid, estimate_id, client_name))
conn.commit(); conn.close()
return {"signature_id": sid, "estimate_id": estimate_id, "client_name": client_name, "status": "pending"}
def record_signature(signature_id, signature_data="approved_via_telegram"):
conn = get_db()
conn.execute("UPDATE signatures SET signature_data=?, signed_at=? WHERE id=?",
(signature_data, now(), signature_id))
conn.commit(); conn.close()
# Also log as activity
sig = row_to_dict(conn.execute("SELECT * FROM signatures WHERE id=?", (signature_id,)).fetchone()) if False else None
return {"ok": True, "signature_id": signature_id, "signed_at": now()}
def get_signature(estimate_id):
conn = get_db()
row = row_to_dict(conn.execute("SELECT * FROM signatures WHERE estimate_id=? ORDER BY signed_at DESC LIMIT 1", (estimate_id,)).fetchone())
conn.close()
return row if row else {"status": "no signature found"}
if __name__ == "__main__":
from lib.db import init_db; init_db()
cmd = sys.argv[1] if len(sys.argv) > 1 else "get"
if cmd == "request": print(json.dumps(request_signature(sys.argv[2], sys.argv[3])))
elif cmd == "record": print(json.dumps(record_signature(sys.argv[2], sys.argv[3] if len(sys.argv)>3 else "approved")))
elif cmd == "get": print(json.dumps(get_signature(sys.argv[2]), indent=2))
else: print(json.dumps({"error": f"unknown: {cmd}"}))