Commit Graph
17 Commits
Author SHA1 Message Date
westfarn 753dd495b4 Show a message when the calendar has no events (#35)
Unit Tests / test (push) Successful in 5s
## Summary
Closes #34.
- Upcoming and Past calendar tabs show a short message when that list is empty, so a calendar with no events is no longer a blank content area.
- Empty copy stays hidden on a tab that has events.

## Test plan
- [ ] Open `/calendar` with no `CalendarEvent` rows and confirm Upcoming says “There are no upcoming events to display.”
- [ ] Switch to Past and confirm it says “There are no past events to display.”
- [ ] Add an upcoming event and confirm the Upcoming message is gone while Past still shows its empty message if there are no past events.
- [ ] `uv run python manage.py test schasite.tests.PublicPageTests.test_calendar_shows_empty_state_when_no_events schasite.tests.CalendarEventTests.test_calendar_page_splits_past_and_future`

Reviewed-on: #35
2026-10-10 04:14:37 -07:00
westfarn 783712972b Show in-progress multi-day events on the calendar (#33)
Unit Tests / test (push) Successful in 5s
## Summary
Closes #32.
- Keep an event on Upcoming until its end date is over. If `end_time` is set, it drops off once that time passes on the end date, so an in-progress multi-day event stays visible.
- Render the Past tab from `past_events` instead of `future_events`.
- Show the start–end date range when the dates differ.

## Test plan
- [ ] Multi-day event that started yesterday and ends tomorrow appears under Upcoming
- [ ] Event whose end time has already passed appears under Past
- [ ] Future single-day event still appears under Upcoming
- [ ] Past tab lists finished events only
- [ ] `uv run python manage.py test schasite.tests.CalendarEventTests`

Reviewed-on: #33
2026-10-06 11:41:16 -07:00
westfarn 531d97f3fc Admin paid indicator, CSV year filter, and payment email search (#30) (#31)
Unit Tests / test (push) Successful in 5s
## 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

Reviewed-on: #31
2026-09-03 13:51:09 -07:00
westfarn f37ff3e87b Add start/end time fields to CalendarEvent (#28) (#29)
Unit Tests / test (push) Successful in 3s
## Summary
Closes #28.

- Add optional `start_time` / `end_time` (`TimeField`) on `CalendarEvent`
- Expose times in Django admin list + form
- Replace hardcoded calendar template times with `time_range_display`
- Add migration `0013` and unit coverage for time formatting

## Test plan
- [ ] `python manage.py migrate`
- [ ] `python manage.py test schasite.tests.CalendarEventTests`
- [ ] In admin, edit an event with start/end times and confirm calendar page shows them
- [ ] Confirm events without times hide the Time rowReviewed-on: #29
2026-08-04 11:00:24 -07:00
westfarn 04c3ac913c SEO enhancement and agentic browsing updates (#18) (#27)
Unit Tests / test (push) Successful in 3s
## Summary
Closes #18.

- Add per-page titles, meta descriptions, Open Graph/Twitter tags, and canonical URLs on public `base2.html` pages
- Improve semantic structure: skip link, primary nav ARIA, single `<main id="main-content">`, heading hierarchy, descriptive image alts
- Publish `/robots.txt`, `/sitemap.xml`, and `/llms.txt` (linked from site head via `rel="alternate"`)
- Agentic/a11y fixes: membership checkbox label associations, ZIP `name` attribute, layout stability (image aspect-ratio / min-height), footer year without `document.write`
- WebMCP deferred — membership + Stripe checkout remain standard HTML/Stripe flows; no audit flag justified custom MCP surface yet

## Lighthouse / agentic notes
Baseline Lighthouse runs still need Chrome Canary export on staging/prod. Structural SEO/a11y items from the ticket are implemented so follow-up audits can capture before/after scores.

Expected audit wins vs prior minimal `charset`+`viewport` head:
- SEO: unique titles/descriptions, crawl directives, sitemap
- Agentic/a11y: landmarks, labels, CLS-oriented image sizing

## Test plan
- [x] `uv run python manage.py test schasite` (34 passed)
- [ ] Spot-check Home/About/Calendar/Dues/Membership/Board/Links in browser
- [ ] Confirm `/robots.txt`, `/sitemap.xml`, `/llms.txt` on deployed host
- [ ] Run Lighthouse SEO + Agentic browsing on key pages and note before/after pass ratio on the issue

Reviewed-on: #27
2026-07-14 05:19:28 -07:00
westfarn b97d5ac792 removed the address and updated the logging 2025-09-08 20:51:09 -05:00
westfarn b9964b22a9 Updates with a sign in page 2025-04-25 10:12:16 -05:00
westfarn 5bd7a37e52 Added telemetry 2025-04-23 09:41:05 -05:00
westfarn 627bff8074 Prod live updates 2025-04-23 09:33:58 -05:00
westfarn 992750dc55 updates to the officer page 2025-04-22 11:51:15 -05:00
westfarn 0e1ddbcf1a Updates to the main page 2025-04-22 11:46:55 -05:00
westfarn 4c0605474c more frontend updates. Added membership only area in debug mode 2025-04-21 10:13:01 -05:00
westfarn 77ccc5c2fe added site tracking and updated urls 2025-04-21 06:27:34 -05:00
westfarn 636cf3d45d Added assets and fixed the membership form 2025-04-18 10:48:41 -05:00
westfarn b1e372ff9d Added assets to the about us page 2025-04-17 11:15:52 -05:00
westfarn b9aee578c3 redesign proto 2025-04-15 12:18:03 -05:00
westfarn cdbbea7711 inital check in 2025-03-07 12:15:48 -06:00