{% extends "base.html" %} {% block content %}
← Back to Students

👨‍🎓 Student Details

Student ID: {{ student.id }}
Name: {{ student.name }}
Email: {{ student.email }}
Department: {{ student.department or 'N/A' }}
Contact: {{ student.contact or 'N/A' }}
{{ issues_with_books|length }}
Total Issues
Click to view all
{{ active_count }}
Active Books
Click to view
{{ returned_count }}
Returned
Click to view
{{ overdue_count }}
Currently Overdue
Total overdue times: {{ total_overdue_times }}

📚 All Issue History

{% if issues_with_books %} {% for item in issues_with_books %} {% set issue = item.issue %} {% set book = item.book %} {% set is_overdue = issue.is_overdue() %} {% set was_overdue = issue.status == 'returned' and issue.days_overdue() > 0 %} {% endfor %}
Book Issue Date Due Date Return Date Status
{{ book.title if book else 'Unknown' }}
ID: {{ issue.book_id }}
{{ issue.issue_date.strftime('%Y-%m-%d %H:%M') }} {{ issue.due_date.strftime('%Y-%m-%d') }} {% if issue.return_date %} {{ issue.return_date.strftime('%Y-%m-%d %H:%M') }} {% else %} Not returned {% endif %} {% if issue.status == 'returned' %} {% if was_overdue %} ⚠ Returned Late ({{ issue.days_overdue() }} days) {% else %} ✓ Returned On Time {% endif %} {% elif is_overdue %} ⚠ OVERDUE ({{ issue.days_overdue() }} days) {% else %} 📖 Active {% endif %}
{% else %}

No issue history found

{% endif %}

📖 Active Books

{% set active_books = issues_with_books|selectattr('issue.status', 'equalto', 'issued')|list %} {% if active_books %} {% for item in active_books %} {% set issue = item.issue %} {% set book = item.book %} {% set is_overdue = issue.is_overdue() %} {% endfor %}
Book Issue Date Due Date Status
{{ book.title if book else 'Unknown' }}
ID: {{ issue.book_id }}
{{ issue.issue_date.strftime('%Y-%m-%d %H:%M') }} {{ issue.due_date.strftime('%Y-%m-%d') }} {% if is_overdue %} ⚠ OVERDUE ({{ issue.days_overdue() }} days) {% else %} 📖 Active {% endif %}
{% else %}

No active books

{% endif %}

✓ Returned Books

{% set returned_books = issues_with_books|selectattr('issue.status', 'equalto', 'returned')|list %} {% if returned_books %} {% for item in returned_books %} {% set issue = item.issue %} {% set book = item.book %} {% set was_overdue = issue.days_overdue() > 0 %} {% endfor %}
Book Issue Date Due Date Return Date Status
{{ book.title if book else 'Unknown' }}
ID: {{ issue.book_id }}
{{ issue.issue_date.strftime('%Y-%m-%d %H:%M') }} {{ issue.due_date.strftime('%Y-%m-%d') }} {{ issue.return_date.strftime('%Y-%m-%d %H:%M') }} {% if was_overdue %} ⚠ Returned Late ({{ issue.days_overdue() }} days) {% else %} ✓ Returned On Time {% endif %}
{% else %}

No returned books

{% endif %}
{% endblock %}