{% extends "base.html" %} {% from "macros.html" import team_filter %} {% block title %}Certifications · Competence{% endblock %} {% block crumbs %}Certifications{% endblock %} {% block content %}

Certifications · as of {{ t.today }} ?

{{ team_filter(teams, team, link) }}

Yes/no qualifications with an expiry date. Missing = the person's role requires it (their role in their latest assessment) and they have never had it. Expiring soon = within {{ expiring_days }} days. Click a name to record or renew. Manage the list in Admin → Certifications.

{% if not t.certs %}

No certifications yet. Add the first one.

{% else %}

Needs attention

{% if t.attention %} {% for x in t.attention %} {% endfor %}
PersonCertificationStatusExpires
{{ x.person.name }} {{ x.cert.name }} {{ status_labels[x.status] }} {{ x.record.expires_on if x.record and x.record.expires_on else "–" }}
{% else %}

Nothing missing, expired or expiring.

{% endif %}

By certification

{% for s in t.certs %} {% for st in ("valid", "expiring", "expired", "missing") %}{% endfor %} {% endfor %}
CertificationValid forRequired by ValidExpiringExpiredMissingFlag
{{ s.cert.name }}{{ s.cert.description }} {{ "%d months"|format(s.cert.valid_months) if s.cert.valid_months else "no expiry" }} {% for r in s.cert.required_by %}{{ roles[r] }}{% if not loop.last %}, {% endif %}{% else %}–{% endfor %}{{ s.counts[st] }}{% if s.nobody_holds_it %}Nobody holds it{% endif %}

Who holds what

{% if t.people %}
{% for s in t.certs %}{% endfor %}{% for p in t.people %} {% for s in t.certs %}{% set status, rec = t.cells[(p.id, s.cert.id)] %} {%- if rec %}{{ ("expired " if status == "expired" else "until ") ~ rec.expires_on if rec.expires_on else "✓" }}{% elif status %}{{ status_labels[status] }}{% else %}–{% endif -%} {% endfor %} {% endfor %}
Person{{ s.cert.name }}
{{ p.name }}
{% else %}

No active people.

{% endif %} {% endif %} {% endblock %}