diff --git a/app/but/jury_export.py b/app/but/jury_export.py
index fd1e67fa7..a403151cb 100644
--- a/app/but/jury_export.py
+++ b/app/but/jury_export.py
@@ -11,6 +11,7 @@ import datetime
from flask import render_template, url_for
import app
+from app import Departement
from app.models import FormSemestre, FormSemestreInscription
from app.views import ScoData
@@ -19,10 +20,14 @@ def feuille_preparation_jury_but(formsemestre_id: int):
formsemestre: FormSemestre = FormSemestre.query.filter_by(
id=formsemestre_id
).first_or_404()
+ departement: Departement = Departement.query.filter_by(
+ id=formsemestre.dept_id
+ ).first_or_404()
breakpoint()
return render_template(
"but/jury_export.j2",
datetime=datetime,
formsemestre=formsemestre,
+ dept = departement.acronym,
sco=ScoData(formsemestre=formsemestre),
)
diff --git a/app/static/js/releve-but.js b/app/static/js/releve-but.js
index d76ec5359..f7872dc05 100644
--- a/app/static/js/releve-but.js
+++ b/app/static/js/releve-but.js
@@ -1,556 +1,578 @@
/* Module par Seb. L. */
-class releveBUT extends HTMLElement {
- constructor() {
- super();
- this.shadow = this.attachShadow({ mode: "open" });
+// class releveBUT extends HTMLElement {
+// constructor() {
+// super();
+// this.shadow = this.attachShadow({ mode: "open" });
+//
+// /* Config par defaut */
+// this.config = {
+// showURL: true,
+// };
+//
+// /* Template du module */
+// this.shadow.innerHTML = this.template();
+//
+// /* Style du module */
+// const styles = document.createElement("link");
+// styles.setAttribute("rel", "stylesheet");
+// if (location.href.includes("ScoDoc")) {
+// styles.setAttribute(
+// "href",
+// removeLastTwoComponents(getCurrentScriptPath()) + "/css/releve-but.css"
+// ); // Scodoc
+// } else {
+// styles.setAttribute("href", "/assets/styles/releve-but.css"); // Passerelle
+// }
+// this.shadow.appendChild(styles);
+// }
+// listeOnOff() {
+// this.parentElement.parentElement.classList.toggle("listeOff");
+// this.parentElement.parentElement
+// .querySelectorAll(".moduleOnOff")
+// .forEach((e) => {
+// e.classList.remove("moduleOnOff");
+// });
+// }
+// moduleOnOff() {
+// this.parentElement.classList.toggle("moduleOnOff");
+// }
+// goTo() {
+// let module = this.dataset.module;
+// this.parentElement.parentElement.parentElement.parentElement
+// .querySelector("#Module_" + module)
+// .scrollIntoView();
+// }
+//
+// set setConfig(config) {
+// this.config.showURL = config.showURL ?? this.config.showURL;
+// }
+//
+// set showData(data) {
+// // this.showInformations(data);
+// this.showSemestre(data);
+// this.showSynthese(data);
+// this.showEvaluations(data);
+//
+// this.showCustom(data);
+//
+// this.setOptions(data.options);
+//
+// this.shadow.querySelectorAll(".CTA_Liste").forEach((e) => {
+// e.addEventListener("click", this.listeOnOff);
+// });
+// this.shadow.querySelectorAll(".ue, .module").forEach((e) => {
+// e.addEventListener("click", this.moduleOnOff);
+// });
+// this.shadow
+// .querySelectorAll(":not(.ueBonus)+.syntheseModule")
+// .forEach((e) => {
+// e.addEventListener("click", this.goTo);
+// });
+//
+// this.shadow.children[0].classList.add("ready");
+// }
+//
+// template() {
+// return `
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
Inscrit le
+//
Les moyennes ci-dessus servent à situer l'étudiant dans la promotion et ne correspondent pas à des validations de compétences ou d'UE.
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
Unités d'enseignement
+// La moyenne des ressources dans une UE dépend des poids donnés aux évaluations.
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
Situations d'apprentissage et d'évaluation (SAÉ)
+//
+//
+//
+//
+//
+//
+//
`;
+// }
+//
+// /********************************/
+// /* Informations sur l'étudiant */
+// /********************************/
+// showInformations(data) {
+// this.shadow.querySelector(".studentPic").src =
+// data.etudiant.photo_url || "default_Student.svg";
+//
+// let output = "";
+//
+// if (this.config.showURL) {
+// output += ``;
+// } else {
+// output += ``;
+// }
+//
+// output += `
+//
+// ${this.civilite(data.etudiant.civilite)}
+// ${data.etudiant.nom}
+// ${data.etudiant.prenom}`;
+//
+// if (data.etudiant.date_naissance) {
+// output += `
né${
+// data.etudiant.civilite == "F" ? "e" : ""
+// } le ${this.ISOToDate(data.etudiant.date_naissance)}
`;
+// }
+//
+// output += `
+//
+//
+// Numéro étudiant : ${data.etudiant.code_nip || "~"} -
+// Code INE : ${data.etudiant.code_ine || "~"}
+//
+//
${data.formation.titre}
+// `;
+// if (this.config.showURL) {
+// output += ``;
+// } else {
+// output += `
`;
+// }
+//
+// this.shadow.querySelector(".infoEtudiant").innerHTML = output;
+// }
+//
+// /*******************************/
+// /* Affichage local */
+// /*******************************/
+// showCustom(data) {
+// this.shadow.querySelector(".custom").innerHTML = data.custom || "";
+// }
+//
+// /*******************************/
+// /* Information sur le semestre */
+// /*******************************/
+// showSemestre(data) {
+// let correspondanceCodes = {
+// ADM: "Admis",
+// AJD: "Admis par décision de jury",
+// PASD: "Passage de droit : tout n'est pas validé, mais d'après les règles du BUT, vous passez",
+// PAS1NCI:
+// "Vous passez par décision de jury mais attention, vous n'avez pas partout le niveau suffisant",
+// RED: "Ajourné mais autorisé à redoubler",
+// NAR: "Non admis et non autorisé à redoubler : réorientation",
+// DEM: "Démission",
+// ABAN: "Abandon constaté sans lettre de démission",
+// RAT: "En attente d'un rattrapage",
+// EXCLU: "Exclusion dans le cadre d'une décision disciplinaire",
+// DEF: "Défaillance : non évalué par manque d'assiduité",
+// ABL: "Année blanche",
+// };
+//
+// this.shadow.querySelector(
+// "#identite_etudiant"
+// ).innerHTML = ` ${data.etudiant.nomprenom} `;
+// this.shadow.querySelector(".dateInscription").innerHTML += this.ISOToDate(
+// data.semestre.inscription
+// );
+// let output = "";
+// if (!data.options.block_moyenne_generale) {
+// output += `
+//
+//
Moyenne
${data.semestre.notes.value}
+//
Rang :
${data.semestre.rang.value} / ${data.semestre.rang.total}
+//
Max. promo. :
${data.semestre.notes.max}
+//
Moy. promo. :
${data.semestre.notes.moy}
+//
Min. promo. :
${data.semestre.notes.min}
+//
+// `;
+// }
+// output += `
+// ${(() => {
+// if (
+// !data.semestre.rang.groupes ||
+// Object.keys(data.semestre.rang.groupes).length == 0
+// ) {
+// return "";
+// }
+// let output = "";
+// let [idGroupe, dataGroupe] = Object.entries(
+// data.semestre.rang.groupes
+// )[0];
+// output += `
+//
${data.semestre.groupes[0]?.group_name}
+//
Rang :
${dataGroupe.value} / ${dataGroupe.total}
+//
`;
+// // Max. promo. :
${dataGroupe.max || "-"}
+// // Moy. promo. :
${dataGroupe.moy || "-"}
+// // Min. promo. :
${dataGroupe.min || "-"}
+// return output;
+// })()}
+//
+//
Absences
${
+// data.semestre.absences?.metrique ?? "1/2 jour."
+// }
+//
Non justifiées
+//
${data.semestre.absences?.injustifie ?? "-"}
+//
Total
${data.semestre.absences?.total ?? "-"}
+//
`;
+// if (data.semestre.decision_rcue?.length) {
+// output += `
+//
+//
RCUE
+// ${(() => {
+// let output = "";
+// data.semestre.decision_rcue.forEach((competence) => {
+// output += `
${competence.niveau.competence.titre}
${competence.code}
`;
+// });
+// return output;
+// })()}
+//
+// `;
+// }
+// if (data.semestre.decision_ue?.length) {
+// output += `
+//
+//
UE
+// ${(() => {
+// let output = "";
+// data.semestre.decision_ue.forEach((ue) => {
+// output += `
${ue.acronyme}
${ue.code}
`;
+// });
+// return output;
+// })()}
+//
+// `;
+// }
+//
+// output += `
+//
+//
+// `;
+// /*${data.semestre.groupes.map(groupe => {
+// return `
+//
+//
Groupe
${groupe.nom}
+//
Rang :
${groupe.rang.value} / ${groupe.rang.total}
+//
Max. groupe :
${groupe.notes.max}
+//
Moy. groupe :
${groupe.notes.min}
+//
Min. groupe :
${groupe.notes.min}
+//
+// `;
+// }).join("")
+// }*/
+// this.shadow.querySelector(".infoSemestre").innerHTML = output;
+//
+// /*if(data.semestre.decision_annee?.code){
+// this.shadow.querySelector(".decision_annee").innerHTML = "Décision année : " + data.semestre.decision_annee.code + " - " + correspondanceCodes[data.semestre.decision_annee.code];
+// }*/
+//
+// this.shadow.querySelector(".decision").innerHTML =
+// data.semestre.situation || "";
+// /*if (data.semestre.decision?.code) {
+// this.shadow.querySelector(".decision").innerHTML = "Décision jury: " + (data.semestre.decision?.code || "");
+// }*/
+// this.shadow.querySelector("#ects_tot").innerHTML =
+// "ECTS : " +
+// (data.semestre.ECTS?.acquis ?? "-") +
+// " / " +
+// (data.semestre.ECTS?.total ?? "-");
+// }
+//
+// /*******************************/
+// /* Synthèse */
+// /*******************************/
+// showSynthese(data) {
+// let output = ``;
+// /* Fusion et tri des UE et UE capitalisées */
+// let fusionUE = [
+// ...Object.entries(data.ues),
+// ...Object.entries(data.ues_capitalisees),
+// ].sort((a, b) => {
+// return a[1].numero - b[1].numero;
+// });
+//
+// /* Affichage */
+// fusionUE.forEach(([ue, dataUE]) => {
+// if (dataUE.type == 1) {
+// // UE Sport / Bonus
+// output += `
+//
+//
+//
Bonus
+//
${dataUE.bonus_description}
+//
+// ${this.ueSport(dataUE.modules)}
+//
+// `;
+// } else {
+// output += `
+//
+//
+//
+// ${ue}${dataUE.titre ? " - " + dataUE.titre : ""}
+//
+//
+//
Moyenne : ${
+// dataUE.moyenne?.value || dataUE.moyenne || "-"
+// }
+//
Rang : ${dataUE.moyenne?.rang} / ${
+// dataUE.moyenne?.total
+// }
+//
`;
+// if (!dataUE.date_capitalisation) {
+// output += ` Bonus : ${dataUE.bonus || 0} - `;
+// if (dataUE.malus >= 0) {
+// output += `Malus : ${dataUE.malus || 0}`;
+// } else {
+// output += `Bonus complémentaire : ${
+// -dataUE.malus || 0
+// }`;
+// }
+// } else {
+// output += ` le ${this.ISOToDate(
+// dataUE.date_capitalisation.split("T")[0]
+// )}
dans ce semestre`;
+// }
+//
+// output += `
-
+// ECTS : ${dataUE.ECTS?.acquis ?? "-"} / ${
+// dataUE.ECTS?.total ?? "-"
+// }
+//
+//
+//
`;
+// /*
+//
Abs N.J.
${dataUE.absences?.injustifie || 0}
+//
Total
${dataUE.absences?.total || 0}
+//
*/
+// output += "
";
+//
+// if (!dataUE.date_capitalisation) {
+// output +=
+// this.synthese(data, dataUE.ressources) +
+// this.synthese(data, dataUE.saes);
+// }
+//
+// output += "
";
+// }
+// });
+// this.shadow.querySelector(".synthese").innerHTML = output;
+// }
+// synthese(data, modules) {
+// let output = "";
+// Object.entries(modules).forEach(([module, dataModule]) => {
+// let titre = data.ressources[module]?.titre || data.saes[module]?.titre;
+// //let url = data.ressources[module]?.url || data.saes[module]?.url;
+// output += `
+//
+//
${module} - ${titre}
+//
+// ${dataModule.moyenne}
+// Coef. ${dataModule.coef}
+//
+//
+// `;
+// });
+// return output;
+// }
+// ueSport(modules) {
+// let output = "";
+// Object.values(modules).forEach((module) => {
+// Object.values(module.evaluations).forEach((evaluation) => {
+// output += `
+//
+//
${module.titre} - ${evaluation.description || "Note"}
+//
+// ${evaluation.note.value ?? "-"}
+// Coef. ${evaluation.coef ?? "*"}
+//
+//
+// `;
+// });
+// });
+// return output;
+// }
+//
+// /*******************************/
+// /* Evaluations */
+// /*******************************/
+// showEvaluations(data) {
+// this.shadow.querySelector(".evaluations").innerHTML = this.module(
+// data.ressources
+// );
+// this.shadow.querySelector(".sae").innerHTML += this.module(data.saes);
+// }
+// module(module) {
+// let output = "";
+// Object.entries(module).forEach(([numero, content]) => {
+// output += `
+//
+//
+//
${this.URL(content.url, `${numero} - ${content.titre}`)}
+//
+//
Moyenne indicative : ${
+// content.moyenne.value
+// }
+//
+// Classe : ${content.moyenne.moy} -
+// Max : ${content.moyenne.max} -
+// Min : ${content.moyenne.min}
+//
+//
+//
+//
Abs inj.
${content.absences?.injustifie || 0}
+//
Total
${content.absences?.total || 0}
+//
+//
+// ${this.evaluation(content.evaluations)}
+//
+// `;
+// });
+// return output;
+// }
+//
+// evaluation(evaluations) {
+// let output = "";
+// evaluations.forEach((evaluation) => {
+// output += `
+//
+//
${this.URL(evaluation.url, evaluation.description || "Évaluation")}
+//
+// ${evaluation.note.value}
+// Coef. ${evaluation.coef ?? "*"}
+//
+//
+//
Coef
${evaluation.coef}
+//
Max. promo.
${evaluation.note.max}
+//
Moy. promo.
${evaluation.note.moy}
+//
Min. promo.
${evaluation.note.min}
+// ${Object.entries(evaluation.poids)
+// .map(([UE, poids]) => {
+// return `
+//
Poids ${UE}
+//
${poids}
+// `;
+// })
+// .join("")}
+//
+//
+// `;
+// });
+// return output;
+// }
+//
+// /********************/
+// /* Options */
+// /********************/
+// setOptions(options) {
+// Object.entries(options).forEach(([option, value]) => {
+// if (value === false) {
+// this.shadow.children[0].classList.add(option.replace("show", "hide"));
+// }
+// });
+// }
+//
+// /********************/
+// /* Fonctions d'aide */
+// /********************/
+// URL(href, content) {
+// if (this.config.showURL) {
+// return `${content}`;
+// } else {
+// return content;
+// }
+// }
+// civilite(txt) {
+// switch (txt) {
+// case "M":
+// return "M.";
+// case "F":
+// return "Mme";
+// default:
+// return "";
+// }
+// }
+//
+// ISOToDate(ISO) {
+// return ISO.split("-").reverse().join("/");
+// }
+// }
+// customElements.define("releve-but", releveBUT);
- /* Config par defaut */
- this.config = {
- showURL: true,
- };
+
\ No newline at end of file
diff --git a/app/templates/but/jury_export.j2 b/app/templates/but/jury_export.j2
index 631146a8f..78a960c18 100644
--- a/app/templates/but/jury_export.j2
+++ b/app/templates/but/jury_export.j2
@@ -23,23 +23,28 @@