"Location", never "campus", in everything people read; SC FOH joined with its MIDI links

- pages (NA 98 Locations / 99 Location, re-imported via PAGES_VERSION), keys, settings page, setup and
  install messages, alerts, docs, the Apollo Beach kit; python3 -m settings.location and /location/...
  addresses (the old names still answer for installed Macs)
- Apply reads the before settings from the file: an in-place edit skipped the watchdog restart
- SC: SUPERRACK (+SoundGrid) and X32 EDIT from SC FOH; FOH TRACKS and TRACKS LIGHTS MIDI links watched

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-21 13:42:22 -04:00
co-authored by Claude Opus 5.5
parent d0c755824b
commit 7068244ba4
31 changed files with 951 additions and 788 deletions
+8 -8
View File
@@ -203,7 +203,7 @@ def pick_plan(plans, now):
def pco_plan(rc, now, service_type=None, team=True):
"""This weekend's plan: {"id", "title", "dates", "time", "items": [...], "team": [...]}.
`service_type` reads another campus's plan for the same weekend (its team is not needed)."""
`service_type` reads another location's plan for the same weekend (its team is not needed)."""
auth, st = pco_login(rc)
if service_type:
st = str(service_type)
@@ -641,9 +641,9 @@ def song_ltc(rc, plan, look):
def match_in_order(na_songs, campus_songs):
"""Pair a campus's songs with the home campus's by title, keeping the home order: a campus song
whose place breaks that order (or that the home campus does not play) is skipped, that song only.
Returns ([(campus item, home song)], [skipped titles])."""
"""Pair a location's songs with the home location's by title, keeping the home order: a location song
whose place breaks that order (or that the home location does not play) is skipped, that song only.
Returns ([(location item, home song)], [skipped titles])."""
pairs, skipped, last = [], [], -1
for it in campus_songs:
idx = next((i for i, s in enumerate(na_songs) if i > last and same(it["title"], s["title"])), None)
@@ -656,7 +656,7 @@ def match_in_order(na_songs, campus_songs):
def campus_ltc(rc, na_plan, na_songs, campus, plan):
"""One other campus's plan against the home timecode: its songs in the home plan's order, each
"""One other location's plan against the home timecode: its songs in the home plan's order, each
with the timecode the home set gives that song (None while the set has none) and what its LTC
note says now."""
note = rc.get("ltc_note", "LTC")
@@ -670,7 +670,7 @@ def campus_ltc(rc, na_plan, na_songs, campus, plan):
def eval_campus_ltc(rc, result, line):
"""The other campus's notes must say the home timecode for every matched song."""
"""The other location's notes must say the home timecode for every matched song."""
tag = result["short"]
for s in result["songs"]:
if s["tracks"] is None: # the home set has no timecode for it yet: the home line says so
@@ -682,7 +682,7 @@ def eval_campus_ltc(rc, result, line):
line.fault(ERR, "%s LTC WRONG %s" % (tag, short(s["title"], 10)), "%s: %s says %s, the tracks start it at %s" % (
result["name"], s["title"], s["pco"], s["tracks"]))
if result["skipped"]:
line.notes.append("%s: not in this campus's order, left alone: %s" % (result["name"], ", ".join(result["skipped"])))
line.notes.append("%s: not in this location's order, left alone: %s" % (result["name"], ", ".join(result["skipped"])))
return line
@@ -1084,7 +1084,7 @@ def look(cfg, now=None, data_dir=None, sources=None):
res = campus_ltc(rc, plan, na_songs, campus, cplan)
eval_campus_ltc(rc, res, lines["timecode"])
others.append(dict(res, songs=[dict(s, item={"id": s["item"]["id"], "note_ids": s["item"]["note_ids"]}) for s in res["songs"]]))
except Exception as e: # noqa: BLE001 - one campus's plan down must not hide the home one
except Exception as e: # noqa: BLE001 - one location's plan down must not hide the home one
tag = campus.get("short") or (campus.get("name") or "?")[:2].upper()
msg = str(e) if isinstance(e, ReadyError) else "PCO UNREACHABLE"
lines["timecode"].fault(WARN, "%s %s" % (tag, msg), "%s: %s" % (campus.get("name") or tag, e))