meeting words come from the units table; the constants are now defaults
MEETING_DAY, MEETING_DAYS, MEETING_DAY_ABBR, PACK_TIME, TROOP_TIME, PACK_CLOCK and TROOP_CLOCK were the last thing a leader could not change without a commit. identity.meeting_words() derives all seven from the units rows; app.py refreshes the module globals from it on a 30-second TTL in a middleware, and the page templates - f-strings that read those globals when a route runs - are untouched. A row that cannot supply a word keeps the default, so a half-filled unit degrades to today's copy rather than a blank. The day words come from the pack row: the site's copy assumes both units meet the same night, and if that changes the copy needs rewriting, not a bigger constant. Proven on a throwaway container with a DB copy: patching pack73 to Thursday 18:15 changed the homepage, cubs, troop and meta description; patching back restored them. tests/smoke_identity.py 59 -> 66.
This commit is contained in:
@@ -168,6 +168,25 @@ con.close()
|
||||
for k in ("invite.created", "invite.consumed", "login.ok", "login.failed", "login.throttled"):
|
||||
check("auth_events records %s" % k, k in kinds)
|
||||
|
||||
print("\nmeeting words")
|
||||
D = dict(MEETING_DAY="Tuesday", MEETING_DAYS="Tuesdays", MEETING_DAY_ABBR="Tue", PACK_TIME="6:00 PM",
|
||||
TROOP_TIME="7:30 PM", PACK_CLOCK="6:00", TROOP_CLOCK="7:30")
|
||||
check("clock words", I.clock_words("18:00") == ("6:00 PM", "6:00") and I.clock_words("07:05") == ("7:05 AM", "7:05")
|
||||
and I.clock_words("00:30") == ("12:30 AM", "12:30") and I.clock_words("12:00") == ("12:00 PM", "12:00"))
|
||||
check("clock words refuse junk", I.clock_words(None) is None and I.clock_words("6pm") is None)
|
||||
w = I.meeting_words([{"slug": "pack73", "meets_weekday": 4, "meets_time": "18:15"},
|
||||
{"slug": "troop73", "meets_weekday": 4, "meets_time": "19:45"}], D)
|
||||
check("day and both times derived", w["MEETING_DAY"] == "Thursday" and w["MEETING_DAYS"] == "Thursdays"
|
||||
and w["MEETING_DAY_ABBR"] == "Thu" and w["PACK_TIME"] == "6:15 PM" and w["PACK_CLOCK"] == "6:15"
|
||||
and w["TROOP_TIME"] == "7:45 PM" and w["TROOP_CLOCK"] == "7:45")
|
||||
w2 = I.meeting_words([{"slug": "pack73", "meets_weekday": None, "meets_time": None},
|
||||
{"slug": "troop73", "meets_weekday": 2, "meets_time": "19:30"}], D)
|
||||
check("missing pack values keep the defaults, day falls to the troop row",
|
||||
w2["MEETING_DAY"] == "Tuesday" and w2["PACK_TIME"] == "6:00 PM" and w2["TROOP_TIME"] == "7:30 PM")
|
||||
check("no rows at all is the defaults", I.meeting_words([], D) == D)
|
||||
check("defaults dict is not mutated", D["PACK_TIME"] == "6:00 PM")
|
||||
check("live seed rows reproduce the constants", I.meeting_words(I.list_units(), D) == D)
|
||||
|
||||
print("\nsafe_next")
|
||||
check("relative path passes", I.safe_next("/leaders/") == "/leaders/")
|
||||
check("query string kept", I.safe_next("/leaders/nearby?x=1") == "/leaders/nearby?x=1")
|
||||
|
||||
Reference in New Issue
Block a user