{% extends "base.html" %} {% block title %}Jobs — Netcanon{% endblock %} {% block content %}

Backup Jobs

{{ jobs|length }} job{{ 's' if jobs|length != 1 else '' }}
{% if not jobs %}

No backup jobs yet. Start one from the Dashboard or set up a recurring Schedule.

{% else %} {% for job in jobs %} {% set success_count = job.results | selectattr('status','eq','success') | list | length %} {% set duration_secs = ((job.completed_at - job.created_at).total_seconds() | int) if job.completed_at else none %}
{{ job.id[:8] }}… {{ job.status.value }} {{ success_count }}/{{ job.total_devices }} {% if success_count == job.total_devices and job.total_devices > 0 %} {% elif success_count == 0 and job.total_devices > 0 %} {% elif success_count < job.total_devices %} {% endif %} {{ job.created_at.strftime('%Y-%m-%d %H:%M') }} {% if duration_secs is not none %} {{ duration_secs }}s {% endif %} {% if job.schedule_name %} 📅 {{ job.schedule_name }} {% else %} Manual {% endif %}
{% endfor %} {% endif %} {% endblock %} {% block scripts %} {% endblock %}