{% extends "base.html" %} {% load check_links humanize i18n translations %} {% block breadcrumbs %} {% endblock breadcrumbs %} {% block content %} {% if errors %}

{% documentation_icon 'admin/install' 'production' right=True %} {% translate "Configuration errors" %}

{% for error in errors %} {% endfor %}
{% translate "Last occurrence" %} {% translate "Name" %} {% translate "Message" %}
{{ error.timestamp }} {{ error.name }} {% configuration_error_link error.name %}
{{ error.message }}
{% csrf_token %}
{% endif %} {% if checks %}

{% documentation_icon 'admin/install' 'production' right=True %} {% translate "System checks" %}

{% for check in checks %} {% endfor %}
{% translate "Name" %} {% translate "Message" %}
{{ check.id }} {% check_link check %} {{ check.msg }}
{% endif %} {% if not checks and not errors %} {% translate "Congratulations, your setup seems to work." as msg %} {% show_message "success" msg %} {% endif %}

{% documentation_icon 'admin/install' 'celery' right=True %} {% translate "Celery queues" %}

{% for name, length in queues %} {% endfor %}
{{ name }} {{ length|intcomma }}
{# TODO(2028.1): Remove this migration status card once Weblate no longer supports direct upgrades from 2026 releases. #}

{% documentation_icon 'admin/memory' 'memory-scopes' right=True %} {% translate "Translation memory migration" %}

{% translate "Scope backfill" %}
{{ memory_migration_status.backfill_percent }}%
{% translate "Entries processed" %} {{ memory_migration_status.processed|intcomma }} / {{ memory_migration_status.total|intcomma }}
{% translate "Duplicate candidate scan" %}
{{ memory_migration_status.compaction_percent }}%
{% translate "Candidate scan cursor" %} {{ memory_migration_status.compaction_last_memory_id|intcomma }} / {{ memory_migration_status.compaction_max_memory_id|intcomma }}
{% translate "Last update" %} {% if memory_migration_status.updated %} {{ memory_migration_status.updated }} {% elif memory_migration_status.completed %} {% translate "Not needed" %} {% else %} {% translate "Not yet started" %} {% endif %}
{% translate "Status" %} {% if memory_migration_status.completed %} {% translate "Completed" %} {% elif memory_migration_status.compaction_active %} {% translate "Scanning duplicate candidates" %} {% else %} {% translate "Backfilling scopes" %} {% endif %}
{% if disk_usage %}

{% documentation_icon 'admin/install' 'hardware' right=True %} {% translate "Disk usage" %}

{% if database_size is not None %} {% if database_disk_usage %} {% else %} {% endif %} {% if database_disk_usage %} {% else %} {% endif %} {% endif %}
{% translate "Storage" %} {% translate "Disk size" %} {% translate "Disk used" %} {% translate "Disk free" %}
{% translate "Server" %} {{ disk_usage.total|filesizeformat }} {{ disk_usage.used|filesizeformat }} {{ disk_usage.free|filesizeformat }}
{% translate "PostgreSQL database" %}{{ database_disk_usage.total|filesizeformat }}{% translate "Not available" %}{{ database_size|filesizeformat }}{{ database_disk_usage.free|filesizeformat }}{% translate "Not available" %}
{% endif %}

{% documentation_icon 'admin/install' 'production-encoding' right=True %} {% translate "System encoding" %}

{% translate "Web server" %} {% translate "Celery worker" %}
{% translate "Filenames encoding" %} {{ web_encoding.0 }} {% if celery_encoding %} {{ celery_encoding.0 }} {% else %} {% translate "Unknown encoding" %} {% endif %}
{% translate "Content encoding" %} {{ web_encoding.1 }} {% if celery_encoding %} {{ celery_encoding.1 }} {% else %} {% translate "Unknown encoding" %} {% endif %}

{% documentation_icon 'admin/install' 'production-database' right=True %} {% translate "Connectivity" %}

{% translate "Database latency" %} {{ database_latency }} ms
{% translate "Cache latency" %} {{ cache_latency }} ms
{% translate "Celery latency" %} {% if celery_latency %} {{ celery_latency }} ms {% else %} {% translate "Not yet measured" %} {% endif %}

{% documentation_icon 'admin/install' 'reverse-proxy' right=True %} {% translate "HTTP environment" %}

{% translate "Observed value" %} {% translate "Configured value" %}
{% translate "Client IP address" %} {{ request.META.REMOTE_ADDR }}
{% translate "HTTP host" %} {{ request.get_host }} {{ site_domain }}
{% translate "HTTP protocol" %} {% if request.is_secure %} https {% else %} http {% endif %} {% if enable_https %} https {% else %} http {% endif %}

{% documentation_icon 'admin/install' 'reverse-proxy' right=True %} {% translate "HTTP headers" %}

{% for name, value in request.headers.items %} {{ name }}: {{ value }}
{% endfor %}
{% endblock content %}