{% extends "controlpanel/base.html" %} {% load lucide ui %} {% block panel_title %}Features{% endblock panel_title %} {% block breadcrumb %} features | {{ flags|length }} flag{{ flags|length|pluralize }} | {{ switches|length }} switch{{ switches|length|pluralize }} | {{ competitions|length }} competition{{ competitions|length|pluralize }} {% endblock breadcrumb %} {% block actions %} {% endblock actions %} {% block panel %} {% url 'controlpanel:flag_create' as flag_create_url %} {% include "controlpanel/_modal_form.html" with modal_id="flag_create_modal" title="New feature" form=flag_form action_url=flag_create_url submit_label="Create" submit_icon="plus" %} {% url 'controlpanel:competition_create' as competition_create_url %} {% include "controlpanel/_modal_form.html" with modal_id="competition_create_modal" title="New competition" form=competition_form action_url=competition_create_url submit_label="Create" submit_icon="plus" %} {% comment %} The lock-down. Clubs get a maintenance page, the scheduled jobs stand down, and the control panel and the auth screens stay open — otherwise you could not sign in to turn it back off. This is the single most safety-critical control in the panel, so the active state gets the full club/club-dark treatment, not just a badge. {% endcomment %}
Every club subdomain is serving a maintenance page and the scheduled jobs have stood down. The control panel and the sign-in screens stay open.
{% else %}Closes every club subdomain and stands the scheduled jobs down. The control panel and the sign-in screens stay open.
{% endif %}Flags are turned on per club. Setting Everyone to Yes or No overrides club targeting entirely.
| Name | Everyone | Clubs | Note | |
|---|---|---|---|---|
| {{ flag.name }} | {% if flag.everyone is True %} On for all {% elif flag.everyone is False %} Off everywhere {% else %} Per club {% endif %} | {{ flag.clubs.count }} | {{ flag.note|default:"—" }} | |
| No features yet. | ||||
Global on/off for the whole platform — kill-switches, maintenance, infra rollouts.
| Name | Note | |
|---|---|---|
| {{ switch.name }} | {{ switch.note|default:"—" }} | |
| No switches yet — add one in the Django admin. | ||
Data sources a game's score/status can be fetched from — see events.services.competitions. A club only sees one in its event form once its feature flag is on for them.
| Name | Sport | Module | Flag | |
|---|---|---|---|---|
| {{ competition.name }} | {{ competition.get_sport_type_display }} | {{ competition.module }} | {% if competition.flag %} {{ competition.flag.name }} {% else %} No flag — hidden everywhere {% endif %} |
|
| No competitions yet. | ||||