forked from ScoDoc/ScoDoc
Update opolka/ScoDoc from ScoDoc/ScoDoc #2
@ -35,111 +35,44 @@
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from flask import flash, g, redirect, request, send_file, url_for
|
from flask import flash, g, redirect, render_template, request, send_file, url_for
|
||||||
|
|
||||||
from app.models import FormSemestre
|
from app.models import FormSemestre
|
||||||
from app.scodoc.sco_exceptions import ScoValueError
|
|
||||||
|
|
||||||
import app.scodoc.sco_utils as scu
|
|
||||||
from app.scodoc import html_sco_header
|
|
||||||
|
|
||||||
from app.pe import pe_comp
|
from app.pe import pe_comp
|
||||||
from app.pe import pe_jury
|
from app.pe import pe_jury
|
||||||
|
from app.views import ScoData
|
||||||
|
from app.scodoc.sco_exceptions import ScoValueError
|
||||||
def _pe_view_sem_recap_form(formsemestre_id):
|
import app.scodoc.sco_utils as scu
|
||||||
sem_base = FormSemestre.get_formsemestre(formsemestre_id)
|
|
||||||
if not sem_base.formation.is_apc() or sem_base.formation.get_cursus().NB_SEM < 6:
|
|
||||||
H = [
|
|
||||||
html_sco_header.sco_header(page_title="Avis de poursuite d'études"),
|
|
||||||
"""<h2 class="formsemestre">Génération des avis de poursuites d'études (V2 BUT EXPERIMENTALE)</h2>
|
|
||||||
<p class="help">
|
|
||||||
Cette fonction génère un ensemble de fichiers permettant d'éditer des avis de
|
|
||||||
poursuites d'études.
|
|
||||||
<br>
|
|
||||||
De nombreux aspects sont paramétrables:
|
|
||||||
<a href="https://scodoc.org/AvisPoursuiteEtudes"
|
|
||||||
target="_blank" rel="noopener noreferrer">
|
|
||||||
voir la documentation (en cours de révision)
|
|
||||||
</a>.
|
|
||||||
Cette fonction (en Scodoc9) n'est prévue que pour le BUT.
|
|
||||||
<br>
|
|
||||||
Rendez-vous donc sur un semestre de BUT.
|
|
||||||
</p>
|
|
||||||
""",
|
|
||||||
]
|
|
||||||
return "\n".join(H) + html_sco_header.sco_footer()
|
|
||||||
|
|
||||||
# L'année du diplome
|
|
||||||
diplome = pe_comp.get_annee_diplome_semestre(sem_base)
|
|
||||||
|
|
||||||
H = [
|
|
||||||
html_sco_header.sco_header(page_title="Avis de poursuite d'études"),
|
|
||||||
f"""<h2 class="formsemestre">Génération des avis de poursuites d'études (V2 BUT EXPERIMENTALE)</h2>
|
|
||||||
|
|
||||||
<div class="alert-warning">
|
|
||||||
Fonction expérimentale pour le BUT : travaux en cours, merci de tester
|
|
||||||
et de faire part de vos expériences sur le Discord.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p class="help">
|
|
||||||
Cette fonction génère un ensemble de fichiers permettant d'éditer des avis de
|
|
||||||
poursuites d'études pour les étudiants diplômés en {diplome}.
|
|
||||||
<br>
|
|
||||||
De nombreux aspects sont paramétrables:
|
|
||||||
<a href="https://scodoc.org/AvisPoursuiteEtudes"
|
|
||||||
target="_blank" rel="noopener noreferrer">
|
|
||||||
voir la documentation
|
|
||||||
</a> (en cours de révision).
|
|
||||||
</p>
|
|
||||||
<form method="post" action="pe_view_sem_recap" id="pe_view_sem_recap_form"
|
|
||||||
enctype="multipart/form-data">
|
|
||||||
<div class="pe_template_up">
|
|
||||||
Les templates sont généralement installés sur le serveur ou dans le
|
|
||||||
paramétrage de ScoDoc.
|
|
||||||
<br>
|
|
||||||
Au besoin, vous pouvez spécifier ici votre propre fichier de template
|
|
||||||
(<tt>un_avis.tex</tt>):
|
|
||||||
<div class="pe_template_upb">Template:
|
|
||||||
<input type="file" size="30" name="avis_tmpl_file"/>
|
|
||||||
</div>
|
|
||||||
<div class="pe_template_upb">Pied de page:
|
|
||||||
<input type="file" size="30" name="footer_tmpl_file"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<input type="submit" value="Générer les documents"/>
|
|
||||||
<input type="hidden" name="formsemestre_id" value="{formsemestre_id}">
|
|
||||||
</form>
|
|
||||||
""",
|
|
||||||
]
|
|
||||||
return "\n".join(H) + html_sco_header.sco_footer()
|
|
||||||
|
|
||||||
|
|
||||||
# called from the web, POST or GET
|
# called from the web, POST or GET
|
||||||
def pe_view_sem_recap(
|
def pe_view_sem_recap(formsemestre_id: int):
|
||||||
formsemestre_id,
|
|
||||||
avis_tmpl_file=None,
|
|
||||||
footer_tmpl_file=None,
|
|
||||||
):
|
|
||||||
"""Génération des avis de poursuite d'étude"""
|
"""Génération des avis de poursuite d'étude"""
|
||||||
if request.method == "GET":
|
|
||||||
return _pe_view_sem_recap_form(formsemestre_id)
|
|
||||||
|
|
||||||
sem_base = FormSemestre.get_formsemestre(formsemestre_id)
|
formsemestre = FormSemestre.get_formsemestre(formsemestre_id)
|
||||||
if not sem_base.formation.is_apc():
|
if not formsemestre.formation.is_apc():
|
||||||
raise ScoValueError(
|
raise ScoValueError(
|
||||||
"Le module de Poursuites d'Etudes avec Scodoc 9 n'est disponible que pour des formations BUT"
|
"""Le module de Poursuites d'Etudes
|
||||||
|
n'est disponible que pour des formations BUT"""
|
||||||
)
|
)
|
||||||
|
|
||||||
if sem_base.formation.get_cursus().NB_SEM < 6:
|
if formsemestre.formation.get_cursus().NB_SEM < 6:
|
||||||
raise ScoValueError(
|
raise ScoValueError(
|
||||||
"Le module de Poursuites d'Etudes avec Scodoc 9 n'est pas prévu pour une formation de moins de 6 semestres"
|
"""Le module de Poursuites d'Etudes n'est pas prévu
|
||||||
|
pour une formation de moins de 6 semestres"""
|
||||||
)
|
)
|
||||||
|
|
||||||
# L'année du diplome
|
# L'année du diplome
|
||||||
diplome = pe_comp.get_annee_diplome_semestre(sem_base)
|
annee_diplome = pe_comp.get_annee_diplome_semestre(formsemestre)
|
||||||
|
|
||||||
jury = pe_jury.JuryPE(diplome, sem_base.formation.formation_id)
|
if request.method == "GET":
|
||||||
|
return render_template(
|
||||||
|
"pe/pe_view_sem_recap.j2",
|
||||||
|
annee_diplome=annee_diplome,
|
||||||
|
formsemestre=formsemestre,
|
||||||
|
sco=ScoData(formsemestre=formsemestre),
|
||||||
|
)
|
||||||
|
|
||||||
|
jury = pe_jury.JuryPE(annee_diplome, formsemestre.formation.formation_id)
|
||||||
if not jury.diplomes_ids:
|
if not jury.diplomes_ids:
|
||||||
flash("aucun étudiant à considérer !")
|
flash("aucun étudiant à considérer !")
|
||||||
return redirect(
|
return redirect(
|
||||||
|
@ -81,8 +81,9 @@ from app.scodoc.sco_formsemestre_custommenu import formsemestre_custommenu_html
|
|||||||
import sco_version
|
import sco_version
|
||||||
|
|
||||||
|
|
||||||
def _build_menu_stats(formsemestre_id):
|
def _build_menu_stats(formsemestre: FormSemestre):
|
||||||
"Définition du menu 'Statistiques'"
|
"Définition du menu 'Statistiques'"
|
||||||
|
formsemestre_id = formsemestre.id
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
"title": "Statistiques...",
|
"title": "Statistiques...",
|
||||||
@ -123,7 +124,8 @@ def _build_menu_stats(formsemestre_id):
|
|||||||
"title": "Documents Avis Poursuite Etudes (xp)",
|
"title": "Documents Avis Poursuite Etudes (xp)",
|
||||||
"endpoint": "notes.pe_view_sem_recap",
|
"endpoint": "notes.pe_view_sem_recap",
|
||||||
"args": {"formsemestre_id": formsemestre_id},
|
"args": {"formsemestre_id": formsemestre_id},
|
||||||
"enabled": True, # current_app.config["TESTING"] or current_app.config["DEBUG"],
|
"enabled": formsemestre.formation.is_apc(),
|
||||||
|
# current_app.config["TESTING"] or current_app.config["DEBUG"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": 'Table "débouchés"',
|
"title": 'Table "débouchés"',
|
||||||
@ -462,7 +464,7 @@ def formsemestre_status_menubar(formsemestre: FormSemestre) -> str:
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
menu_stats = _build_menu_stats(formsemestre_id)
|
menu_stats = _build_menu_stats(formsemestre)
|
||||||
H = [
|
H = [
|
||||||
'<ul id="sco_menu">',
|
'<ul id="sco_menu">',
|
||||||
htmlutils.make_menu("Semestre", menu_semestre),
|
htmlutils.make_menu("Semestre", menu_semestre),
|
||||||
|
48
app/templates/pe/pe_view_sem_recap.j2
Normal file
48
app/templates/pe/pe_view_sem_recap.j2
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{% extends "sco_page.j2" %}
|
||||||
|
|
||||||
|
{% block styles %}
|
||||||
|
{{super()}}
|
||||||
|
<style>
|
||||||
|
.div-warning {
|
||||||
|
color: red;
|
||||||
|
background-color: yellow;
|
||||||
|
font-size: 120%;
|
||||||
|
border: 2px solid red;
|
||||||
|
border-radius: 12px;
|
||||||
|
padding: 12px;
|
||||||
|
margin-top: 16px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
width: fit-content;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
{% endblock styles %}
|
||||||
|
|
||||||
|
{% block app_content %}
|
||||||
|
|
||||||
|
<h2>Génération des avis de poursuites d'études (V2 BUT EXPERIMENTALE)</h2>
|
||||||
|
|
||||||
|
<div class="div-warning">
|
||||||
|
Fonction expérimentale pour le BUT : travaux en cours, merci de tester
|
||||||
|
et de faire part de vos expériences sur le Discord.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="help">
|
||||||
|
<p>
|
||||||
|
Cette fonction génère un ensemble de feuilles de calcul (xlsx)
|
||||||
|
permettant d'éditer des avis de poursuites d'études pour les étudiants
|
||||||
|
de BUT diplômés en {{annee_diplome}}.
|
||||||
|
<br>
|
||||||
|
De nombreux aspects sont paramétrables:
|
||||||
|
<a href="https://scodoc.org/AvisPoursuiteEtudes"
|
||||||
|
target="_blank" rel="noopener noreferrer">
|
||||||
|
voir la documentation
|
||||||
|
</a> (en cours de révision).
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form method="post" action="pe_view_sem_recap" id="pe_view_sem_recap_form">
|
||||||
|
<input type="submit" value="Générer les documents"/>
|
||||||
|
<input type="hidden" name="formsemestre_id" value="{{formsemestre.id}}">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
{% endblock app_content %}
|
Loading…
Reference in New Issue
Block a user