diff --git a/GUESTS.md b/GUESTS.md index a93f79b..afb1809 100644 --- a/GUESTS.md +++ b/GUESTS.md @@ -2,7 +2,7 @@ Aktueller Stand der Login-Gruppen aus `backend/app.py` (`DEFAULT_INVITATION_GROUPS`). -Anzahl Gruppen: **41** +Anzahl Gruppen: **40** | Username | Rolle | Passwort | Members | |---|---|---|---| @@ -32,7 +32,6 @@ Anzahl Gruppen: **41** | Kiki | guest | `Kiki!Rose24#` | Kiki | | Lana & Eric | guest | `Lan&Eric24!#` | Lana, Eric | | Britta | guest | `Brit!Tanz24#` | Britta | -| Holzi | guest | `Holz!Ring24#` | Holzi | | Eirene | guest | `Eire$Fest24!` | Eirene | | Family Hynes | guest | `Hyne&Fam24!#` | Michael, Traci, Bethany, Josiah, Nicholas | | Steven & Martha | guest | `Stev&Mart24!#` | Steven, Martha | diff --git a/README.md b/README.md index 19ff1fa..8871cd8 100644 --- a/README.md +++ b/README.md @@ -595,9 +595,6 @@ Mitglieder: Lana, Eric Britta Mitglieder: Britta -Holzi -Mitglieder: Holzi - Eirene Mitglieder: Eirene diff --git a/backend/__pycache__/app.cpython-312.pyc b/backend/__pycache__/app.cpython-312.pyc index 5c33334..40a520c 100644 Binary files a/backend/__pycache__/app.cpython-312.pyc and b/backend/__pycache__/app.cpython-312.pyc differ diff --git a/backend/app.py b/backend/app.py index 9626c19..4867c8c 100644 --- a/backend/app.py +++ b/backend/app.py @@ -37,7 +37,7 @@ app.config["GOOGLE_MAPS_EMBED_URL"] = os.environ.get( ) app.config["WEDDING_DATE"] = os.environ.get("WEDDING_DATE", "") app.config["WEDDING_COUNTDOWN_ISO"] = os.environ.get("WEDDING_COUNTDOWN_ISO", "") -app.config["WEDDING_COUNTDOWN_LOCAL"] = os.environ.get("WEDDING_COUNTDOWN_LOCAL", "2026-09-04 15:00") +app.config["WEDDING_COUNTDOWN_LOCAL"] = os.environ.get("WEDDING_COUNTDOWN_LOCAL", "2026-09-04 16:00") app.config["WEDDING_TIMEZONE"] = os.environ.get("WEDDING_TIMEZONE", "Europe/Berlin") app.config["HERO_IMAGE_FILENAME"] = os.environ.get("HERO_IMAGE_FILENAME") @@ -157,7 +157,6 @@ DEFAULT_INVITATION_GROUPS = [ "members": ["Lana", "Eric"], }, {"name": "Britta", "password": "Brit!Tanz24#", "role": "guest", "members": ["Britta"]}, - {"name": "Holzi", "password": "Holz!Ring24#", "role": "guest", "members": ["Holzi"]}, {"name": "Eirene", "password": "Eire$Fest24!", "role": "guest", "members": ["Eirene"]}, { "name": "Family Hynes", @@ -334,13 +333,14 @@ TEXTS = { "hero_app_hint_single": "In dieser Webapp kannst du zu- oder absagen, Fotos hochladen, die Galerie ansehen und alle wichtigen Infos rund um den Tag finden. Im Header findest du außerdem unsere FAQ und eine Deutsch-Englisch-Übersetzungshilfe. Bitte gib deine Zu- oder Absage möglichst bald ab.", "hero_app_hint": "In dieser Webapp könnt ihr zu- oder absagen, Fotos hochladen, die Galerie ansehen und alle wichtigen Infos rund um den Tag finden. Im Header findet ihr außerdem unsere FAQ und eine Deutsch-Englisch-Übersetzungshilfe. Bitte gebt eure Zu- oder Absage möglichst bald ab.", "to_guest_area": "Zum Gästebereich", - "schedule_text": "15:00 Trauung, 17:00 Empfang, 19:00 Dinner.", + "schedule_text": "16:00 Ankunft, 16:15 Trauzeremonie, anschließend Sektempfang.", "schedule_intro": "Hier findet ihr den Ablauf für unseren Hochzeitstag.", "schedule_arrival_title": "Ankunft", "schedule_arrival_text": "Wir freuen uns auf eure Ankunft.", "schedule_ceremony_title": "Trauzeremonie", "schedule_ceremony_text": "Trauzeremonie im Hof und Fotos.", "schedule_reception_title": "Sektempfang & Häppchen", + "schedule_reception_time": "Im Anschluss", "schedule_reception_text": "Sektempfang im Hof der Hochheimer Terrasse.", "schedule_buffet_title": "Buffet-Eröffnung", "schedule_buffet_text": "Das Buffet wird eröffnet, danach folgen die Brautpaarspiele. Später gibt es zusätzlich Käseplatten.", @@ -418,7 +418,9 @@ TEXTS = { "faq_change_question": "Kann ich meine Antwort später noch ändern?", "faq_change_answer": "Ja, ihr könnt eure Zu- oder Absage jederzeit bis zum Ende der Rückmeldefrist anpassen.", "faq_when_where_question": "Wann und wo findet die Hochzeit statt?", - "faq_when_where_answer": "Unsere Hochzeit beginnt um 15:30 Uhr auf der Hochheimer Terrasse. Weitere Informationen findet ihr auf der Location-Seite.", + "faq_when_where_answer": "Wir erwarten euch ab 16:00 Uhr auf der Hochheimer Terrasse. Die Trauzeremonie beginnt um 16:15 Uhr. Weitere Informationen findet ihr auf der Location-Seite.", + "faq_dresscode_question": "Gibt es einen Dresscode?", + "faq_dresscode_answer": "Wir wünschen uns festliche Abendgarderobe. Wählt gerne ein elegantes Outfit, in dem ihr euch wohlfühlt – ob Kleid, Anzug oder eine andere festliche Kombination.", "faq_parking_question": "Gibt es Parkmöglichkeiten?", "faq_parking_answer": "In der Hochheimer Altstadt und in der näheren Umgebung gibt es viele Parkmöglichkeiten. Plant bitte etwas Zeit für die Parkplatzsuche und den anschließenden Fußweg ein.", "faq_hotel_question": "Wo können wir übernachten?", @@ -530,13 +532,14 @@ TEXTS = { "hero_app_hint_single": "In this web app, you can send your RSVP, upload photos, view the gallery, and find all important details for the day. The header also includes our FAQ and a German-English translation helper. Please submit your RSVP soon.", "hero_app_hint": "In this web app, you can send your RSVP, upload photos, view the gallery, and find all important details for the day. The header also includes our FAQ and a German-English translation helper. Please submit your RSVP soon.", "to_guest_area": "Open guest area", - "schedule_text": "3:00 PM ceremony, 5:00 PM reception, 7:00 PM dinner.", + "schedule_text": "4:00 PM arrival, 4:15 PM wedding ceremony, followed by a sparkling reception.", "schedule_intro": "Here is the schedule for our wedding day.", "schedule_arrival_title": "Arrival", "schedule_arrival_text": "We look forward to welcoming you.", "schedule_ceremony_title": "Wedding Ceremony", "schedule_ceremony_text": "Wedding ceremony in the courtyard and photos.", "schedule_reception_title": "Sparkling Reception & Snacks", + "schedule_reception_time": "Afterwards", "schedule_reception_text": "Sparkling reception in the courtyard of Hochheimer Terrasse.", "schedule_buffet_title": "Buffet Opening", "schedule_buffet_text": "The buffet opens, followed by wedding games. Cheese platters will be served later.", @@ -614,7 +617,9 @@ TEXTS = { "faq_change_question": "Can I change my response later?", "faq_change_answer": "Yes, you can update your RSVP at any time before the response deadline.", "faq_when_where_question": "When and where is the wedding taking place?", - "faq_when_where_answer": "Our wedding begins at 3:30 PM at Hochheimer Terrasse. You can find more information on the location page.", + "faq_when_where_answer": "We look forward to welcoming you from 4:00 PM at Hochheimer Terrasse. The wedding ceremony begins at 4:15 PM. You can find more information on the location page.", + "faq_dresscode_question": "Is there a dress code?", + "faq_dresscode_answer": "We would love for you to wear formal evening attire. Please choose an elegant outfit you feel comfortable in—whether that is a dress, a suit, or another festive ensemble.", "faq_parking_question": "Is parking available?", "faq_parking_answer": "There are plenty of parking options in Hochheim's old town and the surrounding area. Please allow some extra time to find a space and walk to the venue.", "faq_hotel_question": "Where can we stay overnight?", @@ -717,7 +722,7 @@ def get_wedding_countdown_iso() -> str: local_value = str(app.config.get("WEDDING_COUNTDOWN_LOCAL", "") or "").strip() timezone_name = str(app.config.get("WEDDING_TIMEZONE", "Europe/Berlin") or "Europe/Berlin").strip() if not local_value: - return "2026-09-04T15:00:00+02:00" + return "2026-09-04T16:00:00+02:00" parsed_local = None for fmt in ("%Y-%m-%d %H:%M", "%Y-%m-%dT%H:%M", "%Y-%m-%d %H:%M:%S", "%Y-%m-%dT%H:%M:%S"): @@ -728,7 +733,7 @@ def get_wedding_countdown_iso() -> str: continue if parsed_local is None: - return "2026-09-04T15:00:00+02:00" + return "2026-09-04T16:00:00+02:00" try: tz = ZoneInfo(timezone_name) @@ -1141,6 +1146,7 @@ def faq(): ("faq_deadline_question", "faq_deadline_answer"), ("faq_change_question", "faq_change_answer"), ("faq_when_where_question", "faq_when_where_answer"), + ("faq_dresscode_question", "faq_dresscode_answer"), ("faq_parking_question", "faq_parking_answer"), ("faq_hotel_question", "faq_hotel_answer"), ("faq_upload_question", "faq_upload_answer"), diff --git a/backend/app.sqlite3 b/backend/app.sqlite3 index 93b14bb..307d9b4 100644 Binary files a/backend/app.sqlite3 and b/backend/app.sqlite3 differ diff --git a/backend/static/styles.css b/backend/static/styles.css index 47cee9f..ede7feb 100644 --- a/backend/static/styles.css +++ b/backend/static/styles.css @@ -707,6 +707,12 @@ input[type="file"]:focus { height: 1.02rem; } +.toolbar-translate-btn svg path { + stroke: currentColor; + stroke-width: 0.9; + stroke-linejoin: round; +} + .toolbar-row { display: inline-flex; align-items: center; diff --git a/backend/templates/base.html b/backend/templates/base.html index d234857..459e031 100644 --- a/backend/templates/base.html +++ b/backend/templates/base.html @@ -7,7 +7,7 @@ - +
diff --git a/backend/templates/info.html b/backend/templates/info.html index f6eef84..cd91499 100644 --- a/backend/templates/info.html +++ b/backend/templates/info.html @@ -13,17 +13,17 @@

{{ t('schedule_intro') }}

-

15:00

+

16:00

{{ t('schedule_arrival_title') }}

{{ t('schedule_arrival_text') }}

-

15:30

+

16:15

{{ t('schedule_ceremony_title') }}

{{ t('schedule_ceremony_text') }}

-

16:00

+

{{ t('schedule_reception_time') }}

{{ t('schedule_reception_title') }}

{{ t('schedule_reception_text') }}

diff --git a/data/db/app.sqlite3 b/data/db/app.sqlite3 index a491472..c41d550 100644 Binary files a/data/db/app.sqlite3 and b/data/db/app.sqlite3 differ diff --git a/docker-compose.yml b/docker-compose.yml index f0a3ebb..181ca2e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,7 +25,7 @@ services: - EVENT_PASSWORD=${EVENT_PASSWORD:-wedding2026} - HOST_PASSWORD=${HOST_PASSWORD:-gastgeber2026} - WEDDING_DATE=${WEDDING_DATE:-} - - WEDDING_COUNTDOWN_LOCAL=${WEDDING_COUNTDOWN_LOCAL:-2026-09-04 15:00} + - WEDDING_COUNTDOWN_LOCAL=${WEDDING_COUNTDOWN_LOCAL:-2026-09-04 16:00} - WEDDING_TIMEZONE=${WEDDING_TIMEZONE:-Europe/Berlin} - SECRET_KEY=${SECRET_KEY:-change-me-in-production} - MAX_UPLOAD_BYTES=${MAX_UPLOAD_BYTES:-268435456}