From 2bd914532ef65d69d657f71bbafb64e620e109eb Mon Sep 17 00:00:00 2001 From: Zichao Lin Date: Sun, 5 Jul 2026 21:22:57 +0800 Subject: [PATCH] feat: always display country code in uppercase (model validates + oninput) --- app/models.py | 8 ++++++-- app/routers/web.py | 2 +- app/templates/postcard_form.html | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/models.py b/app/models.py index be4d276..84c4a65 100644 --- a/app/models.py +++ b/app/models.py @@ -1,8 +1,8 @@ import uuid from datetime import datetime, timezone -from sqlalchemy import Column, DateTime, ForeignKey, Integer, String -from sqlalchemy.orm import relationship +from sqlalchemy import Column, DateTime, ForeignKey, Integer, String, event +from sqlalchemy.orm import relationship, validates from app.database import Base @@ -72,3 +72,7 @@ class Postcard(Base): updated_at = Column(DateTime, default=_utcnow, onupdate=_utcnow) profile = relationship("Profile", back_populates="postcards") + + @validates("country") + def _upper_country(self, key, value): + return value.strip().upper() if value else None diff --git a/app/routers/web.py b/app/routers/web.py index 45c2f62..267b1b5 100644 --- a/app/routers/web.py +++ b/app/routers/web.py @@ -221,7 +221,7 @@ def postcard_create( card_number=card_number, status=status, recipient_name=recipient_name or None, - country=country or None, + country=(country.strip().upper() if country else None), send_time=_parse_dt(send_time), arrival_time=_parse_dt(arrival_time), sender_name=sender_name or None, diff --git a/app/templates/postcard_form.html b/app/templates/postcard_form.html index 41a021a..94d9cc8 100644 --- a/app/templates/postcard_form.html +++ b/app/templates/postcard_form.html @@ -19,7 +19,7 @@ - +