From 753dd495b48d905736667708fa62466f098b1b1f Mon Sep 17 00:00:00 2001 From: Ryan Westfall Date: Sat, 10 Oct 2026 04:14:37 -0700 Subject: [PATCH] Show a message when the calendar has no events (#35) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 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: https://git.aimloperations.com/ai_ml_operations/scha/pulls/35 --- schasite/templates/schasite/calendar2.html | 14 ++++++++++++-- schasite/tests.py | 9 +++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/schasite/templates/schasite/calendar2.html b/schasite/templates/schasite/calendar2.html index be73f45..6aa709b 100644 --- a/schasite/templates/schasite/calendar2.html +++ b/schasite/templates/schasite/calendar2.html @@ -136,6 +136,12 @@ + {% empty %} +
+
+ There are no upcoming events to display. +
+
{% endfor %} @@ -179,9 +185,13 @@ + {% empty %} +
+
+ There are no past events to display. +
+
{% endfor %} - - diff --git a/schasite/tests.py b/schasite/tests.py index afdc331..6c48d67 100644 --- a/schasite/tests.py +++ b/schasite/tests.py @@ -66,6 +66,13 @@ class PublicPageTests(TestCase): response = self.client.get(reverse("calendar2")) self.assertEqual(response.status_code, 200) + def test_calendar_shows_empty_state_when_no_events(self): + response = self.client.get(reverse("calendar2")) + + self.assertEqual(response.status_code, 200) + self.assertContains(response, "There are no upcoming events to display.") + self.assertContains(response, "There are no past events to display.") + def test_newsletters_renders(self): response = self.client.get(reverse("newsletters2")) self.assertEqual(response.status_code, 200) @@ -414,6 +421,8 @@ class CalendarEventTests(TestCase): self.assertNotIn("Ongoing Event", past_html) self.assertIn("Archived Picnic", past_html) self.assertNotIn("Archived Picnic", upcoming_html) + self.assertNotIn("There are no upcoming events to display.", upcoming_html) + self.assertNotIn("There are no past events to display.", past_html) @override_settings(