{% extends 'base.html' %} {% block title %}{{ rec.student.full_name }} — Formation{% endblock %} {% macro instructor_fields(i=None) %}
{% endmacro %} {% block content %}
← Dossiers · Fiche de l'élève

{{ rec.student.full_name }} {% if rec.locked %}Verrouillé{% endif %}

{{ rec.program_name }} · début {{ rec.start_date.strftime('%Y-%m-%d') if rec.start_date }}

Instructeurs : {% for link in rec.instructor_links %}{{ link.instructor.name }} (PADI #{{ link.instructor.padi_number }}){{ ', ' if not loop.last }}{% else %}aucun{% endfor %}

{{ rec.status }}
Progression{{ rec.progress }} % ({{ rec.done_count }}/{{ rec.milestones|length }})
{% if rec.locked %}
Dossier verrouillé : un transfert a été émis. Plus aucune modification n'est possible.
{% endif %}
{% for key, label in [('overview','Aperçu'),('instructors','Instructeurs'),('milestones','Jalons'),('signatures','Signatures'),('forms','Formulaires'),('documents','Documents'),('transfer','Suivi et transfert'),('history','Historique')] if key not in ('signatures', 'forms') or rec.is_open_water %} {% endfor %}

Élève

Courriel : {{ rec.student.email or '—' }}
Téléphone : {{ rec.student.phone or '—' }}
Naissance : {{ rec.student.birth_date.strftime('%Y-%m-%d') if rec.student.birth_date else '—' }}
{% if not rec.locked and rec.is_open_water and not rec.signature_for('open_water') %}

« Certifié » exige la signature de certification Open Water (onglet Signatures).

{% endif %}

Tous les instructeurs PADI qui paraphent ce dossier.

{% for link in rec.instructor_links %}{% set i = link.instructor %}
{{ i.name }} · PADI #{{ i.padi_number }}
Centre n° {{ i.center_number or '—' }} · Tél. {{ i.phone or '—' }} · Fax {{ i.fax or '—' }}
{{ i.email or '—' }}
Date : {{ link.signed_on.strftime('%Y-%m-%d') if link.signed_on else '—' }}
{% set sig = rec.signature_for('identification', i.id) %} {% if sig %}Signature de {{ i.name }} {% else %}{% endif %}
{% if not rec.locked %}
{% endif %}
{% if not rec.locked %}
{{ instructor_fields(i) }}

Les coordonnées sont communes à tous les dossiers de cet instructeur.

{% endif %}
{% else %}
Aucun instructeur au dossier.
{% endfor %} {% if not rec.locked %} {% set me_name = ((current_user.first_name or '') ~ ' ' ~ (current_user.last_name or ''))|trim %} {% set me_padi = current_user.certification_number if current_user.certification_agency in (None, 'PADI') else None %}

Ajouter un instructeur

{% if available_instructors %}
{% endif %}
{{ instructor_fields() }}
{% endif %}
{% if not rec.locked and not rec.instructor_links %}
Ajoutez au moins un instructeur au dossier pour pouvoir valider des jalons.
{% endif %} {% for cat, items in categories %}
{{ cat }}{{ items|selectattr('completed')|list|length }}/{{ items|length }}
{% for m in items %}
{{ m.name }}
{% if m.completed %}
{{ m.completed_on.strftime('%Y-%m-%d') }} · {{ m.signed_by }}
{% endif %}
{% if not rec.locked %} {% if m.completed %} {% elif rec.instructor_links %} {% endif %} {% elif m.notes %}{{ m.notes }}{% endif %}
{% endfor %}
{% endfor %}
{% if rec.is_open_water %}

Chaque signature se fait à la main (doigt, stylet ou souris) par la personne elle-même : l'instructeur pour ses lignes, l'élève pour sa déclaration.

{% for sec in signature_sections %}
{{ sec.line.title }} {% if sec.line.optional %}facultatif{% endif %}

{{ sec.line.statement }}

{% for instructor, sig in sec.rows %}
{% if sig %} Signature de {{ sig.signer_name }}
✅ {{ sig.signer_name }}{% if sig.padi_number %} · PADI #{{ sig.padi_number }}{% endif %}
Signé le {{ sig.signed_at.strftime('%Y-%m-%d') }}
{% if not rec.locked %}
{% endif %} {% else %}
⬜ {% if instructor %}{{ instructor.name }} · PADI #{{ instructor.padi_number }} {% elif sec.line.role == 'student' %}Élève : {{ rec.student.full_name }} {% else %}Non signé{% endif %}
{% if sec.missing %}
Il manque : {{ sec.missing_text }}
{% endif %}
{% if not rec.locked and not sec.missing %} {% if sec.line.role == 'student' or rec.instructor_links %} {% else %} Ajoutez un instructeur au dossier {% endif %} {% endif %} {% endif %}
{% else %}
Aucun instructeur au dossier.
{% endfor %}
{% endfor %} {% if not rec.locked %}

Signez ici

Signature trop courte : signez à la main dans le cadre.

{% endif %}
{% endif %} {% if rec.is_open_water %}

Les formulaires du cours Open Water. Ouvrez-en un pour lire le PDF officiel et le faire signer à l'écran, ou pour joindre la version papier numérisée.

{% if rec.student.birth_date is none %}
Sans date de naissance, impossible de savoir si le formulaire parent/enfant est requis. Compléter la fiche de l'élève
{% endif %}
{% endif %}
Pièces de l'élève Gérer
{% for kind in [kind_medical, kind_waiver] %}{% set d = rec.student.latest_document(kind) %}
{{ kind }} {% if d %} {{ d.original_name }} {% if d.valid_until %}{{ 'Expiré le' if d.expired else "Jusqu'au" }} {{ d.valid_until.strftime('%Y-%m-%d') }}{% endif %} {% else %}Manquant{% endif %}
{% endfor %}

Documents de ce dossier

{% if not rec.locked %}
PDF, JPG, JPEG, PNG — 10 Mo max
{% endif %}
{% for d in rec.documents %}
{{ d.original_name }}
{{ d.kind }} · {{ (d.size / 1024)|round|int }} Ko · {{ d.uploaded_by }} · {{ d.uploaded_at.strftime('%Y-%m-%d') }}
{% if not rec.locked %}
{% endif %}
{% else %}
Aucun document.
{% endfor %}

Document de suivi

Photographie imprimable du dossier à ce jour : jalons, instructeurs, signatures. Le dossier reste modifiable et vous pouvez en émettre autant que nécessaire, par exemple pour un autre centre ou pour vos archives.

{% if rec.followups %}
    {% for f in rec.followups %}
  • {{ f.number }} {{ f.issued_on.strftime('%Y-%m-%d') }}{% if f.note %} · {{ f.note }}{% endif %} Voir / imprimer
  • {% endfor %}
{% endif %}

Transfert de l'élève

{% if rec.transfer %}
Transfert n° {{ rec.transfer.number }}
Émis le {{ rec.transfer.issued_on.strftime('%Y-%m-%d') }} · valide jusqu'au {{ rec.transfer.valid_until.strftime('%Y-%m-%d') }}
Destination : {{ rec.transfer.destination or '—' }}
Voir / imprimer {% else %} {% if rec.unsigned_instructors and rec.is_open_water %}
Section d'identification non signée par : {{ rec.unsigned_instructors|map(attribute='name')|join(', ') }}.
{% endif %}

À utiliser seulement quand l'élève poursuit sa formation ailleurs : le transfert fige l'état du dossier (valide 1 an) et le verrouille définitivement.

{% endif %}
{% for a in rec.audit %}
{{ a.action }}{% if a.details %} — {{ a.details }}{% endif %}
{{ a.user_name }} · {{ a.created_at.strftime('%Y-%m-%d %H:%M') }} UTC
{% endfor %}
{% endblock %} {% block extra_js %} {% endblock %}