36 lines
1.8 KiB
Python
36 lines
1.8 KiB
Python
"""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}"}))
|