{# SPDX-FileCopyrightText: 2026 Marcin Zieba #} {# SPDX-License-Identifier: Apache-2.0 #} {% extends "base/layout.html" %} {% load helpers %} {% block title %}Kea Sync Jobs{% endblock %} {% block content %}
{% if can_view_settings %}

The sync interval and the sync types are on the Settings page.

{% endif %} {# Cross-server summary table #}
Server Sync Status
{% for server in servers %} {% with job=latest_jobs|get_item:server.pk %} {% endwith %} {% empty %} {% endfor %}
Server Enabled Last Sync Status Created Updated Errors Conflicts
{{ server.name }} {% if server.sync_enabled %} Enabled {% else %} Disabled {% endif %} {% if job %} {{ job.completed|timesince }} ago {% else %}—{% endif %} {% if job %} {% if job.status == "completed" %} OK {% elif job.status == "failed" %} Error {% elif job.status == "running" %} Running {% else %} {{ job.status }} {% endif %} {% else %} Never {% endif %} {% if job and job.data.summary %} {% for entry in job.data.summary %} {% if entry.pk == server.pk %}{{ entry.created }}{% endif %} {% endfor %} {% else %}—{% endif %} {% if job and job.data.summary %} {% for entry in job.data.summary %} {% if entry.pk == server.pk %}{{ entry.updated }}{% endif %} {% endfor %} {% else %}—{% endif %} {% if job and job.data.summary %} {% for entry in job.data.summary %} {% if entry.pk == server.pk %} {% if entry.errors > 0 %} {{ entry.errors }} {% else %} {{ entry.errors }} {% endif %} {% endif %} {% endfor %} {% else %}—{% endif %} {% if job and job.data.summary %} {% for entry in job.data.summary %} {% if entry.pk == server.pk %} {% if entry.conflicts %} {{ entry.conflicts }} {% else %} {{ entry.conflicts|default:0 }} {% endif %} {% endif %} {% endfor %} {% else %}—{% endif %} {% if server.pk in allowed_server_pks %}
{% csrf_token %}
{% endif %}
No servers configured.
{% endblock %}