feat: implement exchange creation

Add Exchange model, API endpoint, and form validation
for creating new gift exchanges.

- Create ExchangeForm with timezone validation
- Add admin routes for creating and viewing exchanges
- Generate unique 12-char slug for each exchange
- Validate registration/exchange dates
- Display exchanges in dashboard
- All tests passing with 92% coverage

Story: 2.1
This commit is contained in:
2025-12-22 12:41:28 -07:00
parent 7580c39a84
commit 8554f27d86
12 changed files with 837 additions and 7 deletions

24
uv.lock generated
View File

@@ -1046,6 +1046,18 @@ dev = [
{ name = "types-pytz" },
]
[package.dev-dependencies]
dev = [
{ name = "mypy" },
{ name = "pre-commit" },
{ name = "pytest" },
{ name = "pytest-cov" },
{ name = "pytest-flask" },
{ name = "ruff" },
{ name = "types-flask" },
{ name = "types-pytz" },
]
[package.metadata]
requires-dist = [
{ name = "alembic", specifier = ">=1.12" },
@@ -1071,6 +1083,18 @@ requires-dist = [
]
provides-extras = ["dev"]
[package.metadata.requires-dev]
dev = [
{ name = "mypy", specifier = ">=1.19.1" },
{ name = "pre-commit", specifier = ">=4.5.1" },
{ name = "pytest", specifier = ">=9.0.2" },
{ name = "pytest-cov", specifier = ">=7.0.0" },
{ name = "pytest-flask", specifier = ">=1.3.0" },
{ name = "ruff", specifier = ">=0.14.10" },
{ name = "types-flask", specifier = ">=1.1.6" },
{ name = "types-pytz", specifier = ">=2025.2.0.20251108" },
]
[[package]]
name = "sqlalchemy"
version = "2.0.45"