{% extends "../base.html" %} {% load crispy_forms_tags %} {% load humanize %} {% block page_title %}{{ academic_class.Class.name|default:academic_class.Class.code }} - Class Details{% endblock %} {% block content %}

{{ academic_class.Class.name|default:academic_class.Class.code }}

Term {{ academic_class.term.term }} • {{ academic_class.academic_year.academic_year }}

{{ academic_class.section.section_name|default:academic_class.section }}
{% if academic_class.term.is_current %} Active {% else %} Inactive {% endif %} {% if can_manage_class_detail %} Edit {% endif %} Back to Classes
{{ total_students|default:0 }} Total Students
{{ male_students|default:0 }} Male
{{ female_students|default:0 }} Female
{{ stream_count|default:0 }} Streams
UGX {{ academic_class.fees_amount|intcomma }} Fees

Class Information

Class {{ academic_class.Class.name|default:academic_class.Class.code }}
Academic Year {{ academic_class.academic_year.academic_year }}
Term Term {{ academic_class.term.term }}
Section {{ academic_class.section.section_name|default:academic_class.section }}
Fees UGX {{ academic_class.fees_amount|intcomma }}

Class Streams & Teachers

{% if can_manage_class_detail %} {% endif %}
{% if has_duplicate_teacher_assignment %}
Same teacher is assigned to multiple streams in this class.
{% endif %} {% if stream_cards %}
{% for card in stream_cards %}

Stream {{ card.stream_name }}

{% if card.has_teacher %} Assigned {% else %} Unassigned {% endif %}

Class Teacher: {{ card.teacher_name }}

Role: {{ card.teacher_role }}

View Students {% if can_manage_class_detail %} Edit Stream {% endif %}
{% endfor %}
{% else %}

No Streams Added Yet

Add class streams to assign teachers and organize student registers.

{% if can_manage_class_detail %} {% endif %}
{% endif %}

Class Register

{% if can_manage_promotions %} Promotion Center {% endif %} Register Student
Reset
{% if register_rows %}
{% for row in register_rows %} {% endfor %}
# ID No Student Name Gender Stream Attendance % Status Action
{{ row.index }} {{ row.register.student.reg_no|default:"-" }} {{ row.register.student.student_name }} {{ row.register.student.gender|default:"-" }} {{ row.register.academic_class_stream.stream.stream|default:"-" }} {{ row.attendance_rate }}% {% if row.attendance_status_tone == "success" %} {{ row.attendance_status_label }} {% elif row.attendance_status_tone == "danger" %} {{ row.attendance_status_label }} {% else %} {{ row.attendance_status_label }} {% endif %} View
{% else %}

No students have been registered to this class yet.

Register students to start tracking attendance and performance for this class.

Register Student
{% endif %}

Promotion History

{% for row in recent_promotion_history %} {% empty %} {% endfor %}
When By From To Counts
{{ row.promoted_at|date:"d-M-Y H:i" }} {% if row.promoted_by %}{{ row.promoted_by.username }}{% else %}System{% endif %} {{ row.source_academic_class.Class.name|default:row.source_academic_class.Class.code }} (T{{ row.source_academic_class.term.term }} {{ row.source_academic_class.academic_year.academic_year }}) {{ row.target_academic_class.Class.name|default:row.target_academic_class.Class.code }} (T{{ row.target_academic_class.term.term }} {{ row.target_academic_class.academic_year.academic_year }}) {{ row.promoted_count }}/{{ row.total_candidates }} promoted {% if row.already_registered_count %}
{{ row.already_registered_count }} already registered{% endif %} {% if row.skipped_inactive_count %}
{{ row.skipped_inactive_count }} inactive skipped{% endif %} {% if row.missing_stream_names %}
Missing streams: {{ row.missing_stream_names|join:", " }}{% endif %}
No promotion history yet for this class.

Attendance Overview (Term {{ academic_class.term.term }})

Average Attendance {{ attendance_average_rate }}%
Total Lessons Conducted {{ lessons_conducted }}
Chronic Absentees {{ chronic_absentees_count }}

Chronic absenteeism threshold: below {{ minimum_attendance_percent }}% attendance after at least 5 recorded lessons.

{% if can_manage_class_detail %} {% endif %} {% if can_manage_promotions %} {% endif %} {% endblock %}