Update opolka/ScoDoc from ScoDoc/ScoDoc #2

Merged
opolka merged 1272 commits from ScoDoc/ScoDoc:master into master 2024-05-27 09:11:04 +02:00
4 changed files with 47 additions and 25 deletions
Showing only changes of commit 6834c19015 - Show all commits

View File

@ -353,12 +353,12 @@ class Assiduite(ScoDocModel):
elif self.external_data is not None and "module" in self.external_data: elif self.external_data is not None and "module" in self.external_data:
return ( return (
"Tout module" "Autre module (pas dans la liste)"
if self.external_data["module"] == "Autre" if self.external_data["module"] == "Autre"
else self.external_data["module"] else self.external_data["module"]
) )
return "Non spécifié" if traduire else None return "Module non spécifié" if traduire else None
def get_saisie(self) -> str: def get_saisie(self) -> str:
""" """

View File

@ -401,7 +401,7 @@ async function creerTousLesEtudiants(etuds) {
* @returns {String} * @returns {String}
*/ */
async function getModuleImpl(assiduite) { async function getModuleImpl(assiduite) {
if (assiduite == null) return "Pas de module"; if (assiduite == null) return "Module non spécifié";
const id = assiduite.moduleimpl_id; const id = assiduite.moduleimpl_id;
if (id == null || id == undefined) { if (id == null || id == undefined) {
@ -414,7 +414,7 @@ async function getModuleImpl(assiduite) {
? "Autre module (pas dans la liste)" ? "Autre module (pas dans la liste)"
: assiduite.external_data.module; : assiduite.external_data.module;
} else { } else {
return "Pas de module"; return "Module non spécifié";
} }
} }
@ -890,6 +890,11 @@ function setupAssiduiteBubble(el, assiduite) {
actionsDiv.appendChild(infos); actionsDiv.appendChild(infos);
bubble.appendChild(actionsDiv); bubble.appendChild(actionsDiv);
const stateDiv = document.createElement("div");
stateDiv.className = "assiduite-state";
stateDiv.textContent = `État: ${assiduite.etat.capitalize()}`;
bubble.appendChild(stateDiv);
const idDiv = document.createElement("div"); const idDiv = document.createElement("div");
idDiv.className = "assiduite-id"; idDiv.className = "assiduite-id";
getModuleImpl(assiduite).then((modImpl) => { getModuleImpl(assiduite).then((modImpl) => {
@ -897,26 +902,32 @@ function setupAssiduiteBubble(el, assiduite) {
}); });
bubble.appendChild(idDiv); bubble.appendChild(idDiv);
const periodDivDeb = document.createElement("div"); // Affichage des dates
periodDivDeb.className = "assiduite-period"; // si les jours sont les mêmes, on affiche "jour hh:mm - hh:mm"
periodDivDeb.textContent = `${formatDateModal(assiduite.date_debut)}`; // sinon on affiche "jour hh:mm - jour hh:mm"
bubble.appendChild(periodDivDeb); const periodDiv = document.createElement("div");
const periodDivFin = document.createElement("div"); periodDiv.className = "assiduite-period";
periodDivFin.className = "assiduite-period"; const dateDeb = new Date(Date.removeUTC(assiduite.date_debut));
periodDivFin.textContent = `${formatDateModal(assiduite.date_fin)}`; const dateFin = new Date(Date.removeUTC(assiduite.date_fin));
bubble.appendChild(periodDivFin); if (dateDeb.isSame(dateFin, "day")) {
const jour = dateDeb.format("DD/MM/YYYY");
const deb = dateDeb.format("HH:mm");
const fin = dateFin.format("HH:mm");
periodDiv.textContent = `${jour} de ${deb} à ${fin}`;
} else {
const jourDeb = dateDeb.format("DD/MM/YYYY");
const jourFin = dateFin.format("DD/MM/YYYY");
periodDiv.textContent = `du ${jourDeb} au ${jourFin}`;
}
const stateDiv = document.createElement("div"); bubble.appendChild(periodDiv);
stateDiv.className = "assiduite-state";
stateDiv.textContent = `État: ${assiduite.etat.capitalize()}`;
bubble.appendChild(stateDiv);
const motifDiv = document.createElement("div"); const motifDiv = document.createElement("div");
stateDiv.className = "assiduite-why"; motifDiv.className = "assiduite-why";
const motif = ["", null, undefined].includes(assiduite.desc) const motif = ["", null, undefined].includes(assiduite.desc)
? "Pas de motif" ? "Non spécifié"
: assiduite.desc.capitalize(); : assiduite.desc.capitalize();
stateDiv.textContent = `Motif: ${motif}`; motifDiv.textContent = `Motif: ${motif}`;
bubble.appendChild(motifDiv); bubble.appendChild(motifDiv);
const userIdDiv = document.createElement("div"); const userIdDiv = document.createElement("div");

View File

@ -1,8 +1,7 @@
<div class="assiduite-bubble {{etat}}"> <div class="assiduite-bubble {{etat}}">
<div class="assiduite-id">{{moduleimpl}}</div>
<div class="assiduite-period">{{date_debut}}</div>
<div class="assiduite-period">{{date_fin}}</div>
<div class="assiduite-state">État: {{etat}}</div> <div class="assiduite-state">État: {{etat}}</div>
<div class="assiduite-id">{{moduleimpl}}</div>
<div class="assiduite-period">{{date}}</div>
<div class="assiduite-why">Motif: {{motif}}</div> <div class="assiduite-why">Motif: {{motif}}</div>
<div class="assiduite-user_id">{{saisie}}</div> <div class="assiduite-user_id">{{saisie}}</div>
</div> </div>

View File

@ -2581,14 +2581,26 @@ def _generate_assiduite_bubble(assiduite: Assiduite) -> str:
# Récupérer informations saisie # Récupérer informations saisie
saisie: str = assiduite.get_saisie() saisie: str = assiduite.get_saisie()
motif: str = assiduite.description if assiduite.description else "" motif: str = assiduite.description or "Non spécifié"
# Récupérer date
if assiduite.date_debut.date() == assiduite.date_fin.date():
jour = assiduite.date_debut.strftime("%d/%m/%Y")
heure_deb: str = assiduite.date_debut.strftime("%H:%M")
heure_fin: str = assiduite.date_fin.strftime("%H:%M")
date: str = f"{jour} de {heure_deb} à {heure_fin}"
else:
date: str = (
f"du {assiduite.date_debut.strftime('%d/%m/%Y')} "
+ f"au {assiduite.date_fin.strftime('%d/%m/%Y')}"
)
return render_template( return render_template(
"assiduites/widgets/assiduite_bubble.j2", "assiduites/widgets/assiduite_bubble.j2",
moduleimpl=moduleimpl_infos, moduleimpl=moduleimpl_infos,
etat=scu.EtatAssiduite(assiduite.etat).name.lower(), etat=scu.EtatAssiduite(assiduite.etat).name.lower(),
date_debut=assiduite.date_debut.strftime("%d/%m/%Y %H:%M"), date=date,
date_fin=assiduite.date_fin.strftime("%d/%m/%Y %H:%M"),
saisie=saisie, saisie=saisie,
motif=motif, motif=motif,
) )