Compare commits
11 Commits
master
...
export_jur
Author | SHA1 | Date |
---|---|---|
Jean-Marie Place | ee4741431b | |
Jean-Marie Place | 82b69ee885 | |
Jean-Marie Place | b38c79a100 | |
Jean-Marie Place | 9bb7a1add7 | |
Jean-Marie Place | f51f05cbab | |
Jean-Marie Place | ecd48de211 | |
Jean-Marie Place | a42e23b0ec | |
Jean-Marie Place | aab014f5ef | |
Jean-Marie Place | a2467fd236 | |
Jean-Marie Place | 8b332120bf | |
Jean-Marie Place | f99be92fad |
|
@ -0,0 +1,32 @@
|
|||
##############################################################################
|
||||
# ScoDoc
|
||||
# Copyright (c) 1999 - 2023 Emmanuel Viennet. All rights reserved.
|
||||
# See LICENSE
|
||||
##############################################################################
|
||||
|
||||
"""Feuille d'export Jury BUT
|
||||
"""
|
||||
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
|
||||
|
||||
|
||||
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()
|
||||
return render_template(
|
||||
"but/jury_export.j2",
|
||||
datetime=datetime,
|
||||
formsemestre=formsemestre,
|
||||
dept=departement.acronym,
|
||||
sco=ScoData(formsemestre=formsemestre),
|
||||
)
|
|
@ -444,6 +444,12 @@ def formsemestre_status_menubar(formsemestre: FormSemestre) -> str:
|
|||
"args": {"formsemestre_id": formsemestre_id},
|
||||
"enabled": not formsemestre.formation.is_apc(),
|
||||
},
|
||||
{
|
||||
"title": "Générer feuille préparation Jury (BUT)",
|
||||
"endpoint": "notes.feuille_preparation_jury_but",
|
||||
"args": {"formsemestre_id": formsemestre_id},
|
||||
"enabled": formsemestre.formation.is_apc(),
|
||||
},
|
||||
{
|
||||
"title": "Éditer les PV et archiver les résultats",
|
||||
"endpoint": "notes.formsemestre_archive",
|
||||
|
|
|
@ -0,0 +1,142 @@
|
|||
|
||||
const studentsdemo = [
|
||||
{ "name": "Alice", "wait": 500, "sems": [0, 2] },
|
||||
{ "name": "Bob", "wait": 500, "sems": [1, 2, 3]}
|
||||
];
|
||||
const semsdemo = [
|
||||
{ "id": 0, "wait": 4, "notes": {"Alice": 13 } },
|
||||
{ "id": 1, "wait": 3, "notes": {"Bob": 6 } },
|
||||
{ "id": 2, "wait": 8, "notes": {"Alice": 11, "Bob": 18 } },
|
||||
{ "id": 3, "wait": 7, "notes": {"Bob": 17 } },
|
||||
];
|
||||
|
||||
/*
|
||||
getStudents <= [ "Alice", #Bob" ]
|
||||
getSems("Alice") <= [ 1, 3]
|
||||
getSems("Bob") <= [ 2, 3, 4]
|
||||
getMarks(1) <= {"Alice": 13 }
|
||||
getMarks(2) <= {"Alice": 13 }...
|
||||
getMarks(3) <= {"Alice": 13 }
|
||||
getMarks(4) <= {"Alice": 13 }
|
||||
*/
|
||||
|
||||
|
||||
async function do_export(api_root, formsemstre_id) {
|
||||
console.log('***************** start *****************');
|
||||
const students = await api.getStudents(api_root, formsemstre_id);
|
||||
console.log('***************** got students *****************');
|
||||
console.log(students)
|
||||
console.log('***************** seeking sems *****************');
|
||||
const student_requests = students.map((student) => {
|
||||
return api.getStudentSems(api_root, student.id);
|
||||
});
|
||||
const sems = await Promise.all(student_requests);
|
||||
debugger;
|
||||
console.log('***************** got sems *****************');
|
||||
const set_sem = new Set(sems.flat());
|
||||
console.log(set_sem)
|
||||
console.log('***************** seeking marks *****************');
|
||||
const studentsGrades = await Promise.all([...set_sem].map(sem => api.getMarks(sem)));
|
||||
debugger;
|
||||
// Expected output: "resolved"
|
||||
}
|
||||
|
||||
|
||||
const api = {
|
||||
getStudents(api_root, formsemestre_id) {
|
||||
return fetch(`${api_root}/formsemestre/${formsemestre_id}/etudiants`)
|
||||
.then(response => response.json())
|
||||
},
|
||||
getStudentSems(api_root, etudid) {
|
||||
return fetch(`${api_root}/etudiant/etudid/${etudid}/formsemestres`)
|
||||
.then(response => response.json())
|
||||
},
|
||||
getMarks(sem_id) {
|
||||
return new Promise(
|
||||
resolve => { setTimeout(resolve, semsdemo[sem_id].wait, semsdemo[sem_id].notes ); }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// let loaded_sems = [];
|
||||
//
|
||||
// async function doit() {
|
||||
// getStudents()
|
||||
// .then(students => {
|
||||
// return Promise.all(students.map(student => {
|
||||
// api.getStudentSems(student)
|
||||
// .then(sems_id => {
|
||||
// sem_requests = []
|
||||
// sems_id.forEach(sem_id => {
|
||||
// if (typeof sem_requests[sem_id] === 'undefined') {
|
||||
// sem_requests[sem_id](api.getMarks(sem_id));
|
||||
// });
|
||||
// });
|
||||
// then(allMarks => {
|
||||
// console.log(allMarks);
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
|
||||
/*
|
||||
let dataSrc = "/ScoDoc/{{dept}}/api/formsemestre/{{formsemestre.id}}/etudiants/long";
|
||||
let formsemestres = [];
|
||||
fetch(dataSrc)
|
||||
.then(r => { return r.json(); })
|
||||
.then(json => {
|
||||
let etudiants = json;
|
||||
promises_etud_semestres = []
|
||||
promises_semestres = []
|
||||
etudiants.forEach((etudiant) => {
|
||||
let url =`/ScoDoc/{{dept}}/api/etudiant/nip/${etudiant.code_nip}/formsemestres`;
|
||||
console.log(url);
|
||||
promises_etud_semestres.push(
|
||||
fetch(url)
|
||||
.then(r => { return r.json(); })
|
||||
.then(semestre => {
|
||||
formsemestre_id = semestre.formsemestre_id;
|
||||
|
||||
})
|
||||
)
|
||||
// etudiant.formsemestres_id = [];
|
||||
fetch(url)
|
||||
.then(r => {return r.json; })
|
||||
.then(json => {
|
||||
let forms = json;
|
||||
console.log(etudiant.code_nip + " " + forms.formsemestre_id);
|
||||
// forms.forEach((formsem) => {
|
||||
// if (formsem.is_apc) {
|
||||
// etudiant.formsemestres_id.push(formsem.formsemestre_id);
|
||||
// if (formsem.formsemestre_id in_array()) {
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
});
|
||||
});
|
||||
//let releve = document.querySelector("releve-but");
|
||||
//releve.showData = json;
|
||||
// Style custom à ajouter
|
||||
// let style = document.createElement("style");
|
||||
// style.textContent = `
|
||||
// .module>div,
|
||||
// .dateInscription,
|
||||
// .numerosEtudiant,
|
||||
// .dateNaissance{
|
||||
// display: none;
|
||||
// }`;
|
||||
//releve.shadowRoot.appendChild(style);
|
||||
})
|
||||
.catch(error => { console.log(error)});
|
||||
// .catch(error => {
|
||||
// let div = document.createElement("div");
|
||||
// div.innerText = "Une erreur s'est produite lors du transfert des données.";
|
||||
// div.style.fontSize = "24px";
|
||||
// div.style.color = "#d93030";
|
||||
|
||||
// let releve = document.querySelector("releve-but");
|
||||
// releve.after(div);
|
||||
// releve.remove();
|
||||
|
||||
// throw 'Fin du script - données invalides';
|
||||
// });
|
||||
*/
|
|
@ -0,0 +1,37 @@
|
|||
{# -*- mode: jinja-html -*- #}
|
||||
{% extends "sco_page.j2" %}
|
||||
|
||||
{% block styles %}
|
||||
{{super()}}
|
||||
{% endblock %}
|
||||
|
||||
{% block app_content %}
|
||||
|
||||
<H1>Export xlsx de fichier de jury</H1>
|
||||
|
||||
<form type="button">
|
||||
<p>Formsemestre: {{ formsemestre.id }}</p><br/>
|
||||
<p>API root: /ScoDoc/{{dept}}/api/</p><br/>
|
||||
<button id="ok" type="button">Exporter</button>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block scripts %}
|
||||
{{super()}}
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$("#ok").click(function(){
|
||||
do_export("/ScoDoc/{{dept}}/api", {{formsemestre.id}});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<script src="{{scu.STATIC_DIR}}/js/export-jury-but.js"></script>
|
||||
|
||||
<script>
|
||||
document.querySelector("html").style.scrollBehavior = "smooth";
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
|
@ -51,6 +51,7 @@ from app.but import (
|
|||
jury_but_pv,
|
||||
jury_but_validation_auto,
|
||||
jury_but_view,
|
||||
jury_export,
|
||||
)
|
||||
from app.but.forms import jury_but_forms
|
||||
|
||||
|
@ -2969,6 +2970,11 @@ sco_publish(
|
|||
sco_prepajury.feuille_preparation_jury,
|
||||
Permission.ScoView,
|
||||
)
|
||||
sco_publish(
|
||||
"/feuille_preparation_jury_but",
|
||||
jury_export.feuille_preparation_jury_but,
|
||||
Permission.ScoView,
|
||||
)
|
||||
sco_publish(
|
||||
"/formsemestre_archive",
|
||||
sco_archives.formsemestre_archive,
|
||||
|
|
Loading…
Reference in New Issue