1feba25ced
* inspect_xlsx.py — one-off xlsx dumper used to discover the Stop Directory sheet structure (14 lines, kept for reference when the tour schedule xlsx is updated next season). * scripts/seed_tuxedo_tour.py — Python+openpyxl seed script that parsed the 3-week Tuxedo Corn 2026 tour schedule and inserted 269 stops via admin_create_stops_batch. Also linked each stop to its Stop Directory venue (address/phone/contact) and self-published by flipping status='draft' -> 'active'. * supabase/migrations/202_delete_stop_orders_guard_fix.sql — fixes a 400 error on the admin Stop Table delete button. The delete_stop RPC referenced o.deleted_at on the orders table, but that column doesn't exist, so the SELECT raised 'column does not exist' and PostgREST surfaced it as HTTP 400. The fix drops the redundant o.deleted_at IS NULL clause (pickup_complete = false is sufficient on its own); re-add it here if/when orders grows a deleted_at column.
15 lines
567 B
Python
15 lines
567 B
Python
import openpyxl
|
|
path = "/home/coder/dev/x1/kyle/route_commerce-main/Tuxedo_Corn_2026_Tour_Schedule-3.xlsx"
|
|
wb = openpyxl.load_workbook(path, data_only=True)
|
|
for name in wb.sheetnames:
|
|
ws = wb[name]
|
|
print(f"=== SHEET: {name} ({ws.max_row} rows x {ws.max_column} cols) ===")
|
|
for row in ws.iter_rows(values_only=False):
|
|
for cell in row:
|
|
if cell.value is not None:
|
|
v = str(cell.value)
|
|
if len(v) > 200:
|
|
v = v[:200] + "..."
|
|
print(f" {cell.coordinate}: {v!r}")
|
|
print()
|