From 7d2c2411266121b568e6dd7a63f199dbe02ac16b Mon Sep 17 00:00:00 2001 From: thethreemagi Date: Thu, 27 Aug 2026 07:47:15 -0400 Subject: [PATCH] Give the join confirmation its own page instead of a banner below the fold On a phone the /join grid collapses to one column, so the success banner rendered below the entire pitch column and the 303 landed the parent at the top of an apparently unchanged page. The empty form underneath then read as a failed send. ?sent=1 now returns a dedicated confirmation body: banner first, what happens next, and no form to resubmit. --- app/app.py | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/app/app.py b/app/app.py index f2ab38e..b4fcb96 100644 --- a/app/app.py +++ b/app/app.py @@ -511,8 +511,28 @@ SOURCE_JS = """""" -def join_body(sent=False): - success = '
Thanks! Your note is on its way. A leader will be in touch soon.
' if sent else '' +def thanks_body(): + return """ +
+
Thanks! Your note is on its way. A leader will be in touch soon.
+
Join Pack & Troop 73
+

We got it. Here is what happens next.

+

No commitment, and your first visit is always free. There is nothing to do between now and Tuesday.

+
+
1Your form is in. It went straight to our volunteer leaders' phones.
+
2Hear back within a day or two from a real Pack or Troop 73 parent, with the right den or troop and directions.
+
3Visit a Tuesday at St. Luke's: Pack 6:00, Troop 7:30. Sneakers and a water bottle are all you need.
+
+
If a couple of days go by with nothing, check your spam folder, then send the form again. We would rather hear twice than miss you.
+
+See the year ahead +What a meeting looks like +
+Scouts cheering during a pack game +
""" + + +def join_body(): faq_html = "".join(f'
{q}
{a}
' for q, a in FAQ) return f"""
@@ -525,7 +545,7 @@ def join_body(sent=False):
3Visit a Tuesday at St. Luke's: Pack 6:00, Troop 7:30. Sneakers recommended.
Scouts cheering during a pack game -
{success} +
Interest form
@@ -562,7 +582,9 @@ def join_body(sent=False): @app.get("/join", response_class=HTMLResponse) def join_get(sent: int = 0): - return page("Join us · Pack & Troop 73", join_body(bool(sent))) + if sent: + return page("Thanks · Pack & Troop 73", thanks_body()) + return page("Join us · Pack & Troop 73", join_body()) @app.get("/contact") def contact_redirect():