{% extends "base.html" %} {% from "_macros.html" import help %} {% block title %}Clients — BackupWatch{% endblock %} {% block main_class %}cl2{% endblock %} {% block content %}

Clients

{% if user.role in ['admin', 'tech'] %} {% endif %}
{% if err %}{% endif %} {% if msg %}{% endif %}
{% if user.role in ['admin', 'tech'] %}
{% endif %}
{% for c in clients %} {# job_counts is a pre-aggregated {client_id: n} map — reading c.jobs here would lazy-load every client's job rows, one query per row #} {% set n_jobs = job_counts.get(c.id, 0) %} {# data-orig-* are what bulk edit diffs against, so only changed rows are ever submitted #}
{{ c.code or "—" }} {% if user.role in ['admin', 'tech'] %} {% endif %} {{ c.name }} {% if user.role in ['admin', 'tech'] %} {% endif %} {% if c.active %}Active{% else %}Paused{% endif %} {% if user.role in ['admin', 'tech'] %} {% endif %} {{ n_jobs }} {% if c.email_identifiers %}{{ c.email_identifiers|replace("\n", " · ") }}{% else %}—{% endif %} {% if user.role in ['admin', 'tech'] %} {# stored one-per-line; edited as " · " on a single row and split back on submit #} {% endif %}
{% endfor %}
No clients match your filters.
{% if not clients %}
No clients yet{% if user.role in ['admin', 'tech'] %} — click Add client above to start monitoring backups{% endif %}.
{% endif %} {% if user.role in ['admin', 'tech'] %}
No changes yet
{% endif %}
{% if user.role in ['admin', 'tech'] %}
{% endif %} {% if user.role in ['admin', 'tech'] %}

Add clients

The client code is your MSP's client reference — it prefixes the display name and is used in reports and exports.

{% endif %} {% endblock %}