Add clear asset GPS endpoint + UI
- DELETE /api/assets/{id}/gps: clears lat/lng to NULL
- GET /api/assets/{id}: asset lookup by ID
- GET /api/assets/search?machine_id=: asset lookup by machine ID
- Export & Admin page: Clear Asset GPS card with lookup + confirmation
- Tests: 204 success + 404 not found
This commit is contained in:
@@ -1583,6 +1583,51 @@ def export_checkins_csv(asset_id: Optional[int] = Query(None)):
|
||||
)
|
||||
|
||||
|
||||
# ─── Asset GPS Management ──────────────────────────────────────────────────
|
||||
|
||||
|
||||
@app.get("/api/assets/{asset_id}")
|
||||
def get_asset_admin(asset_id: int):
|
||||
"""Get a single asset by ID (admin)."""
|
||||
conn = get_db()
|
||||
row = conn.execute("SELECT * FROM assets WHERE id = ?", (asset_id,)).fetchone()
|
||||
conn.close()
|
||||
if row is None:
|
||||
raise HTTPException(status_code=404, detail="Asset not found")
|
||||
return row_to_dict(row)
|
||||
|
||||
|
||||
@app.get("/api/assets/search")
|
||||
def search_assets_admin(machine_id: str = Query(...)):
|
||||
"""Search for an asset by machine_id (admin)."""
|
||||
conn = get_db()
|
||||
row = conn.execute(
|
||||
"SELECT * FROM assets WHERE machine_id = ?", (machine_id,)
|
||||
).fetchone()
|
||||
conn.close()
|
||||
if row is None:
|
||||
raise HTTPException(status_code=404, detail="Asset not found")
|
||||
return row_to_dict(row)
|
||||
|
||||
|
||||
@app.delete("/api/assets/{asset_id}/gps", status_code=204)
|
||||
def clear_asset_gps(asset_id: int):
|
||||
"""Clear GPS coordinates from an asset (sets latitude/longitude to NULL)."""
|
||||
conn = get_db()
|
||||
existing = conn.execute("SELECT id, name FROM assets WHERE id = ?", (asset_id,)).fetchone()
|
||||
if existing is None:
|
||||
conn.close()
|
||||
raise HTTPException(status_code=404, detail="Asset not found")
|
||||
conn.execute(
|
||||
"UPDATE assets SET latitude = NULL, longitude = NULL, updated_at = datetime('now') WHERE id = ?",
|
||||
(asset_id,),
|
||||
)
|
||||
_log_activity(conn, "updated", "asset", asset_id,
|
||||
f"GPS data cleared for '{existing['name']}'")
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
|
||||
# ─── Icon Upload API ────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user