{% extends "base.html" %} {% block title %}Dashboard{% endblock %} {% block page_title %}Dashboard{% endblock %} {% block content %}

Needs Attention (cleaning > {{ stale_days }}d, playtime > {{ play_stale_days }}d, or never logged; most urgent first)

Cleaning

{% if cleaning_attention %}
{% for row in cleaning_attention %} {% endfor %}
Hutch Occupants Overdue Actions
{{ row.hutch.name }} {% if row.residents %}
{% for r in row.residents %}{{ r.name }}{% endfor %}
{% else %} empty {% endif %}
{% if row.days is none %} Never cleaned {% else %} {{ row.days }}d ago {% endif %} {% if user.role in ('staff', 'admin') %} Manage → {% endif %}
{% else %}

✓ All hutches are clean.

{% endif %}

Playtime

{% if playtime_attention %}
{% for row in playtime_attention %} {% endfor %}
Hutch Occupants Overdue Actions
{{ row.hutch.name }} {% if row.residents %}
{% for r in row.residents %}{{ r.name }}{% endfor %}
{% else %} empty {% endif %}
{% if row.days is none %} Never played {% else %} {{ row.days }}d ago {% endif %} {% if user.role in ('staff', 'admin') %} Manage → {% endif %}
{% else %}

✓ All hutches are up to date on playtime.

{% endif %}

Activity Log

{% if recent_audit %}
{% for row in recent_audit %} {% endfor %}
When User Action Section Record Changes
{{ row.entry.timestamp | fmt_date }} {{ row.username }} {{ row.entry.action }} {{ row.section }} {{ row.record_label }} {% if row.changes %}{{ row.changes | join(', ') }}{% else %}—{% endif %}
{% else %}

No activity yet.

{% endif %} {% endblock %}