{% extends "admin/base_site.html" %} {% load i18n static %} {% block title %}{% if server_settings.title %}{{ server_settings.title }} | {% endif %}Status{% endblock %} {% block extrahead %} {{ block.super }} {% endblock %} {% block breadcrumbs %} {% endblock %} {% block content %}
OK (<{{ warn_days }}d) Warning ({{ warn_days }}–{{ require_days }}d) Rotation Required ({{ require_days }}–{{ lockout_days }}d) Locked (>{{ lockout_days }}d) Unlocked — Rotation Required Never Rotated Operator Requested
{% csrf_token %}
{% if rows %}
{% for row in rows %} {% endfor %}
Client Host Version Token Age Status Action
{{ row.client.name }} {{ row.client.host.name }} {% if row.client_version %} {% if row.version_state %}●{% endif %}{{ row.client_version }} {% else %} — {% endif %}
{{ row.label }}{% if row.age_days is not None %} ({% blocktrans count counter=row.age_days %}{{ counter }} day{% plural %}{{ counter }} days{% endblocktrans %}){% endif %}
{% if row.state == "locked" %}
{% csrf_token %}
{% elif row.state == "unlocked" %}
{% csrf_token %}
{% elif row.client.rotation_required %}
{% csrf_token %}
{% else %}
{% csrf_token %}
{% endif %}
{% else %}

No clients registered.

{% endif %}

Thresholds: warn at {{ warn_days }} days · require at {{ require_days }} days · locked at {{ lockout_days }} days. Configure via TOKEN_WARN_DAYS, TOKEN_REQUIRE_DAYS, TOKEN_LOCKOUT_DAYS in .env. Set TOKEN_LOCKOUT_DAYS=0 to disable lockout enforcement.

{% if version_summary %}

Client Version Summary

{% for pkg in version_summary %}
{{ pkg.package }}{% if pkg.latest %} (Latest: {{ pkg.latest }}){% endif %}
{% for row in pkg.rows %}
{% if row.state == "current" %} ● {% elif row.state == "outdated" %} ● {% else %} ● {% endif %} {{ row.version }} {{ row.count }} client{{ row.count|pluralize }} {% if pkg.latest and row.version == pkg.latest %} (latest) {% endif %}
{% endfor %} {% if not pkg.latest %}
Run check_client_updates to populate latest version.
{% endif %}
{% endfor %}
{% endif %} {% endblock %}