Coach lineup polish, referee level/position delete, feature-flag nav gating, per-job pause

- Coach line-up screen: more breathing room above the sheet, brighter event
  subtitle, and the "Schedule" button now matches the date input's height.
- Positions and referee levels can now be deleted from Settings (blocked with
  a friendly message if still in use on a roster/referee profile/inheritance
  chain).
- The Evaluations nav placeholder is now gated on the formbuilder flag, same
  as Forms itself, since the design reuses formbuilder underneath.
- Control panel: each scheduled platform job can now be paused/resumed
  individually (features.models.JobToggle), independent of the platform-wide
  Maintenance lock.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-23 11:17:46 +02:00
parent e621086f37
commit 1365dcf18e
23 changed files with 422 additions and 3029 deletions

View File

@@ -13,7 +13,7 @@ from waffle import get_waffle_flag_model
from club.models import Club, ClubMembership, OnboardingRequirement, Season
from club.services.onboarding import mark_bypassed, mark_complete
from features.models import Maintenance
from features.models import JobToggle, Maintenance
from members.models import Group, GroupMembership, Member
from notifications.models import Notification
from teams.models import Position, RefereeLevel, RefereeProfile, StaffAssignment, Team, TeamMembership
@@ -1981,6 +1981,12 @@ class SendDeadlineRemindersTests(EventsTestBase):
with self.assertRaises(RuntimeError):
send_deadline_reminders()
def test_raises_when_paused_from_the_control_panel(self):
JobToggle.set_enabled("events.tasks.send_deadline_reminders", False)
with self.assertRaises(RuntimeError):
send_deadline_reminders()
class PublishScheduledLineupsTests(EventsTestBase):
"""events.tasks.publish_scheduled_lineups -- the periodic sweep behind a
@@ -2047,3 +2053,9 @@ class PublishScheduledLineupsTests(EventsTestBase):
with self.assertRaises(RuntimeError):
publish_scheduled_lineups()
def test_raises_when_paused_from_the_control_panel(self):
JobToggle.set_enabled("events.tasks.publish_scheduled_lineups", False)
with self.assertRaises(RuntimeError):
publish_scheduled_lineups()