{% extends "base.html" %} {% from "_macros.html" import status_pill, media_pill, cover_url, loan_pill %} {% block title %}{{ work.title }} — {{ library_name() }}{% endblock %} {% block content %}

{{ work.title }}

{% if work.subtitle %}

{{ work.subtitle }}

{% endif %}
{% if work.creators %} {% endif %}
{% if message %}

{{ message }}

{% endif %} {% if error %}

{{ error }}

{% endif %} {% if all_withdrawn %}

All copies of this title have been withdrawn and it is no longer available to borrow.

{% endif %} {% if has_permission(user, 'work.edit') %}

Edit work Manage creators

{% endif %} {% if has_permission(user, 'curatedlist.manage') %} {# Librarians navigate to the list admin to add this work. A full inline list-picker widget would require a new route; this is the pragmatic v1 choice. #}

Manage curated lists

{% endif %}
{% if work.description %}

{{ work.description }}

{% endif %} {% if work.extra_metadata and work.extra_metadata.get('tagline') %}

Tagline

{{ work.extra_metadata['tagline'] }}

{% endif %} {% if work.extra_metadata and work.extra_metadata.get('cast') %}

Cast

{{ work.extra_metadata['cast'] | join(", ") }}

{% endif %} {% if work.extra_metadata and work.extra_metadata.get('tracks') %}

Tracklist

    {% for track in work.extra_metadata['tracks'] %}
  1. {{ track['title'] }} {% if track['length_ms'] %} {% set s = track['length_ms'] // 1000 %} {{ s // 60 }}:{{ "0" if s % 60 < 10 else "" }}{{ s % 60 }} {% endif %}
  2. {% endfor %}
{% endif %}
{% if work.creators %}
Creator(s)
{% for wc in work.creators %}{{ wc.creator.display_name }} ({{ wc.role }}){% if not loop.last %}, {% endif %}{% endfor %}
{% endif %}
Type
{{ media_pill(work.media_type) }}
{% if work.publisher %}
Publisher
{{ work.publisher }}
{% endif %} {% if work.publication_year %}
Year
{{ work.publication_year }}
{% endif %} {% if work.isbn %}
ISBN
{{ work.isbn }}
{% endif %} {% if work.upc %}
UPC
{{ work.upc }}
{% endif %} {% if work.classification_code %}
Classification
{{ work.classification_scheme | upper }}: {{ work.classification_code }}
{% endif %} {% if work.extra_metadata and work.extra_metadata.get('format') %}
Format
{{ work.extra_metadata['format'] }}
{% endif %} {% if work.extra_metadata and work.extra_metadata.get('runtime_minutes') %}
Runtime
{{ work.extra_metadata['runtime_minutes'] }} min
{% endif %} {% if work.extra_metadata and work.extra_metadata.get('genres') %}
Genres
{{ work.extra_metadata['genres'] | join(", ") }}
{% endif %}

Copies

{% if user and ("*" in user.role.permissions or "item.create" in user.role.permissions) %} + Add copy {% endif %}
{% if work.items %} {% for item in work.items %} {% endfor %}
BarcodeBranchStatusCall #
{{ item.barcode }} {{ item.branch.name }} {{ status_pill(item.status) }} {{ loan_pill(item) }} {% if item.status == "checked_out" and item_due.get(item.id) %}
due {{ item_due[item.id].strftime("%Y-%m-%d") }} {% endif %}
{{ item.call_number or "—" }}
{% else %}

No copies on record.

{% endif %}
{% if not has_loanable %}

No loanable copies of this work are available — holds are disabled.

{% else %} {% if patron %}

Reserve this work

{% elif user %}

Your account has no patron record — contact a librarian to place holds.

{% else %}

Log in to place a hold.

{% endif %} {% if has_permission(user, 'hold.place.any') %}
{% include "_partials/scanner_dialog.html" %} {% endif %} {% endif %} {% if has_permission(user, 'hold.view.any') %}

Hold queue

{% if queue %} {% for h in queue %} {% endfor %}
#PatronPlacedStatusSuspended
{{ loop.index }} {{ h.patron.full_name }}
{{ h.patron.library_card_number }}
{{ h.placed_at.strftime("%Y-%m-%d") }} {{ status_pill(h.status) }} {% if h.suspended_until %}Until {{ h.suspended_until.isoformat() }}{% else %}—{% endif %}
{% else %}

No active holds.

{% endif %} {% endif %} {% if work.external_ids and work.external_ids.get('tmdb') %}

Film data provided by TMDb. This product uses the TMDB API but is not endorsed or certified by TMDB.

{% endif %} {% endblock %} {% block scripts %} {% if has_permission(user, 'hold.place.any') %} {% include "_partials/scanner_scripts.html" %} {% endif %} {% endblock %}