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