Green check (“Paid this year”) on membership list, person list, and person inline when Payments.email matches MembershipPerson.email (case-insensitive) for the current calendar year. Also matches via the payment’s person FK.
CSV downloads for payments, memberships by person, and memberships by address prompt for a year (default current year, or All years). Payments filter by payment date; memberships filter by record created year. Changelists also get a year sidebar filter.
Payments admin remains searchable by email.
Test plan
uv run python manage.py test
In admin, open Memberships / Membership people and confirm a green check when a same-year payment email matches, and a red X otherwise
Select memberships → Download CSV by member/address → pick a year → confirm only that year is in the file
Select payments → Download payments CSV → pick a year → confirm filter
On Payments, search by email and filter by year
## Summary
Closes #30.
- Green check (“Paid this year”) on membership list, person list, and person inline when `Payments.email` matches `MembershipPerson.email` (case-insensitive) for the current calendar year. Also matches via the payment’s person FK.
- CSV downloads for payments, memberships by person, and memberships by address prompt for a year (default current year, or All years). Payments filter by payment date; memberships filter by record created year. Changelists also get a year sidebar filter.
- Payments admin remains searchable by email.
## Test plan
- [ ] `uv run python manage.py test`
- [ ] In admin, open Memberships / Membership people and confirm a green check when a same-year payment email matches, and a red X otherwise
- [ ] Select memberships → Download CSV by member/address → pick a year → confirm only that year is in the file
- [ ] Select payments → Download payments CSV → pick a year → confirm filter
- [ ] On Payments, search by email and filter by year
## Summary
Closes#30.
- Green check on membership/person admin when a current-year payment email matches
- Year picker on membership and payment CSV downloads
- Payments admin search by email, plus year list filters
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Closes #30.
Payments.emailmatchesMembershipPerson.email(case-insensitive) for the current calendar year. Also matches via the payment’s person FK.Test plan
uv run python manage.py test