{% extends "base.html" %} {% from "_macros.html" import status_pill %} {% block title %}Holds — {{ library_name() }}{% endblock %} {% block content %}

Holds

All active holds across the library. Filter by status, branch, patron or work. Suspended holds keep their queue position; the pickup shelf is the "Pickup shelf" status filter.

Reset

{{ total }} matching hold{{ '' if total == 1 else 's' }}{% if status == 'available' %} · on the pickup shelf now{% endif %}

{% if holds %} {% for h in holds %} {% endfor %}
# Placed Patron Work Status Branch Suspended Expires
{{ positions.get(h.id) or "—" }} {{ h.placed_at.strftime("%Y-%m-%d") }} {{ h.patron.full_name }}
{{ h.patron.library_card_number }}
{{ h.work.title }} {{ status_pill(h.status) }} {{ h.branch.code if h.branch else "—" }} {% if h.suspended_until %} Until {{ h.suspended_until.isoformat() }} {% if h.suspended_reason %}
{{ h.suspended_reason }}{% endif %} {% else %} — {% endif %}
{{ h.expires_at.strftime("%Y-%m-%d") if h.expires_at else "—" }}
{% if has_prev or has_next %} {% endif %} {% else %}

No holds match these filters.

{% endif %} {% endblock %}