Skip to content

Conversation

@liocle
Copy link
Owner

@liocle liocle commented Jul 26, 2025

🧾 Summary

This PR introduces a redesigned welcome letter template with structured typography and layout, and adds tooling to batch-generate PDFs. It also expands seed data, improves test coverage, and mounts new template volumes into Docker for live development.


✅ What’s Included

📄 Letter Template (HTML/CSS)

  • Complete rewrite of welcome_letter.html.jinja2:
    • Declarative layout using CSS custom properties
    • Absolute-positioned sender/recipient blocks
    • Sectioned title, body, and payment info
    • Link and email styling
  • Placeholder content to be localized/updated later

🛠 Makefile Utility

  • Added make generate_letters:
    generate_letters:
    	docker compose exec api python scripts/generate_letters.py
  • Can be chained after make create_db && make seed_db

🧪 Testing

  • Added new route test files:
    • test_routes_member_search.py — full coverage of all search endpoints
    • test_routes_membership.py — tests /members/{id}/memberships
    • test_routes_misc.py — validates /misc/* endpoints
  • Patched conftest.py to ensure example.test → example.com for better email consistency

🌱 Seed Data Enhancements

  • Added:
    • Diana — new unpaid member (2025)
    • Erkki — historical + unpaid membership

🐳 Docker Development Volumes

  • Mounted:
    • app/pdf/templates/ for live letter previewing
    • Ensures you can tweak layout without rebuilding the image

🧪 How to Test

make create_db
make seed_db
make generate_letters
  • PDFs saved to output/letters/
  • API check:
    curl -X POST http://localhost:8000/members/1/generate_welcome_letter

🧭 Follow-up Ideas

  • Generate PDFs at time of /new_member creation
  • Automatically email PDF to member

liocle added 5 commits July 26, 2025 09:46
…points

- tests/test_routes_misc.py: cover all /misc routes (/, /health, /version, /info, /docs)
- tests/test_routes_member_search.py:
  • search by reference (found/not-found)
  • search variants for full_name, name, city
  • postal code search with table truncation for isolation
  • override DB dependency to use test session
- tests/test_routes_membership.py:
  • POST /members/{id}/memberships success case (flags logic)
  • 404 when member not found
- Ensure make_member fixture generates unique @example.com emails and test isolation via table cleanup
WIP: Creating the template with addresses to match letter/envelope addresses placeholder
- Added generate_letters target to Makefile for host-side script invocation"
…tes in Docker

- Revise HTML/CSS for welcome_letter template (address blocks, flow layout, payment info)
- Modify docker-compose.yml to bind-mount the templates directory into the API container
- added links,
- improved file structure using variables
@liocle liocle merged commit c85a2dc into main Jul 26, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants