{#- Historique (chronologie d'une offre, de Mon CV, des Règles). À importer : {% from "_historique.html" import historique, ligne, bloc_compte_rendu %} Les lignes sont celles de `interface/historique.py` (`Ligne`). URL dérivées de `base_url` (fiche : `/offre//historique`, Mon CV : `/cv-base/historique`, Règles : `/regles/historique`) : `/comparer?cle=…&numero=…`, `/compte-rendu`, `/restaurer`. Les erreurs ciblent `#etat-`. -#} {% from "_composants.html" import zone_etat %} {#- Le compte rendu d'une préparation, déplié : texte brut (déjà en libellés humains), échappé par le gabarit. -#} {% macro bloc_compte_rendu(texte) -%}
{{ texte }}
{%- endmacro %} {#- Une `
  • ` de l'historique : la date par le filtre `date_relative`, le libellé, les actions (Comparer, Compte rendu, Revenir à cette version). `index` : rang de la ligne (0 pour la ligne de tête), qui nomme les zones dépliées `#comparaison--` et `#compte-rendu--`. `retour` : None (fiche, Mon CV) : « Revenir » poste `/restaurer` et écrit une version ; fourni (Règles) : {url, cible, echange}, avec `{cle}` remplacé par la clé de la ligne, et la route n'écrit rien (elle charge la version dans le brouillon) ; le bouton porte `hx-post`, `hx-vals` (cle, numero), `hx-target` et `hx-swap`. Une ligne `en_cours` se sonde elle-même (`every 3s`, `?sonde=1`, `outerHTML`) : la route rend alors une `
  • ` entière, sans sondage une fois la préparation finie. -#} {% macro ligne(l, index, base_url, zone, retour=None) -%}
  • {{ l.date | date_relative }} {{ l.libelle }}{% if l.courante %} actuelle{% endif %} {% if l.sorte == "version" and l.cles and not l.courante %} {% endif %} {% if l.sorte == "preparation" %} {% endif %} {% if l.sorte in ("version", "preparation") and l.cles and not l.courante %} {% if retour %} {% else %}
    {% for cle, numero in l.cles %} {% endfor %}
    {% endif %} {% endif %}
    {% if l.en_cours and l.compte_rendu %}{{ bloc_compte_rendu(l.compte_rendu) }}{% endif %}
  • {%- endmacro %} {#- L'historique : la zone d'état des erreurs, puis la liste `
      ` (la cible du retour à une version : elle est remplacée en entier). -#} {% macro historique(lignes, base_url, zone, retour=None, jamais=()) -%} {{ zone_etat(zone) }}
        {% for l in lignes %} {{ ligne(l, loop.index0, base_url, zone, retour) }} {% endfor %} {% for libelle in jamais %}
      • {{ libelle }} : jamais modifiées, les règles par défaut s'appliquent.
      • {% endfor %}
      {%- endmacro %}