Files
handoff-pro/scripts/daily_log.py

44 lines
1.8 KiB
Python
Raw Permalink Normal View History

"""Daily job log management."""
import json, sys, os
from datetime import date
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 create(job_id, notes, crew_names=None, hours_worked=None, photos=None):
lid = new_id()
conn = get_db()
conn.execute("""INSERT INTO daily_logs (id, job_id, log_date, crew_names, hours_worked, notes, photos, created_at)
VALUES (?,?,?,?,?,?,?,?)""",
(lid, job_id, date.today().isoformat(), crew_names, hours_worked or 0, notes,
json.dumps(photos) if photos else None, now()))
conn.commit(); conn.close()
return {"id": lid, "job_id": job_id, "date": date.today().isoformat()}
def list_logs(job_id):
conn = get_db()
rows = conn.execute("SELECT * FROM daily_logs WHERE job_id=? ORDER BY log_date DESC", (job_id,)).fetchall()
conn.close()
result = rows_to_list(rows)
for r in result:
r["photos"] = json.loads(r["photos"]) if r["photos"] else []
return {"logs": result}
def get_log(log_id):
conn = get_db()
row = row_to_dict(conn.execute("SELECT * FROM daily_logs WHERE id=?", (log_id,)).fetchone())
conn.close()
if not row: return {"error": "log not found"}
row["photos"] = json.loads(row["photos"]) if row["photos"] else []
return row
if __name__ == "__main__":
from lib.db import init_db; init_db()
cmd = sys.argv[1] if len(sys.argv) > 1 else "list"
if cmd == "create":
print(json.dumps(create(sys.argv[2], sys.argv[3],
sys.argv[4] if len(sys.argv)>4 else None,
float(sys.argv[5]) if len(sys.argv)>5 else None)))
elif cmd == "list": print(json.dumps(list_logs(sys.argv[2]), indent=2))
elif cmd == "get": print(json.dumps(get_log(sys.argv[2]), indent=2))
else: print(json.dumps({"error": f"unknown: {cmd}"}))