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

@@ -48,6 +48,7 @@ urlpatterns = [
path("positions/", views.PositionListView.as_view(), name="position_list"),
path("positions/new/", views.PositionCreateView.as_view(), name="position_create"),
path("positions/<uuid:pk>/edit/", views.PositionUpdateView.as_view(), name="position_update"),
path("positions/<uuid:pk>/delete/", views.PositionDeleteView.as_view(), name="position_delete"),
path("roles/", views.ClubRoleListView.as_view(), name="role_list"),
path("roles/new/", views.ClubRoleCreateView.as_view(), name="role_create"),
path("roles/<uuid:pk>/revoke/", views.ClubRoleRevokeView.as_view(), name="role_revoke"),
@@ -81,6 +82,7 @@ urlpatterns = [
path("referee-levels/", views.RefereeLevelListView.as_view(), name="referee_level_list"),
path("referee-levels/new/", views.RefereeLevelCreateView.as_view(), name="referee_level_create"),
path("referee-levels/<uuid:pk>/edit/", views.RefereeLevelUpdateView.as_view(), name="referee_level_update"),
path("referee-levels/<uuid:pk>/delete/", views.RefereeLevelDeleteView.as_view(), name="referee_level_delete"),
# News
path("news/", views.NewsListView.as_view(), name="news_list"),
path("news/new/", views.NewsCreateView.as_view(), name="news_create"),