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
7 changed files with 51 additions and 34 deletions
Showing only changes of commit 85005419ae - Show all commits

View File

@ -83,7 +83,6 @@ from app.models.but_validations import (
ApcValidationRCUE,
)
from app.models.etudiants import Identite
from app.models.formations import Formation
from app.models.formsemestre import FormSemestre
from app.models.ues import UniteEns
from app.models.validations import ScolarFormSemestreValidation
@ -93,7 +92,6 @@ from app.scodoc.codes_cursus import (
code_rcue_validant,
BUT_CODES_ORDER,
CODES_RCUE_VALIDES,
CODES_UE_CAPITALISANTS,
CODES_UE_VALIDES,
RED,
UE_STANDARD,

View File

@ -304,9 +304,16 @@ class NotesTableCompat(ResultatsSemestre):
)
def get_etud_decisions_ue(self, etudid: int) -> dict:
"""Decisions du jury pour les UE de cet etudiant, ou None s'il n'y en pas eu.
Ne tient pas compte des UE capitalisées.
{ ue_id : { 'code' : ADM|CMP|AJ, 'event_date' : "d/m/y", 'ects' : x }
"""Decisions du jury pour les UE de cet etudiant dans ce formsemestre,
ou None s'il n'y en pas eu.
Ne tient pas compte des UE capitalisées ou externes.
{ ue_id : {
'code' : ADM|CMP|AJ|ADSUP|...,
'event_date' : "d/m/y",
'ects' : float, nb d'ects validées dans l'UE de ce semestre.
}
...
}
Ne renvoie aucune decision d'UE pour les défaillants
"""
if self.get_etud_etat(etudid) == DEF:

View File

@ -50,7 +50,7 @@ def load_formsemestre_validations(formsemestre: FormSemestre) -> ValidationsSeme
If not in cache, build it and cache it (in g).
"""
if not hasattr(g, "formsemestre_validation_cache"):
g.formsemestre_validations_cache = {} # pylint: disable=C0237
g.formsemestre_validations_cache = {}
else:
if formsemestre.id in g.formsemestre_validations_cache:
return g.formsemestre_validations_cache[formsemestre.id]

View File

@ -201,8 +201,8 @@ CODES_SEM_REO = {NAR} # reorientation
CODES_JURY_UE = {ADM, CMP, ADJ, ADJR, ADSUP, AJ, ATJ, RAT, DEF, ABAN, DEM, UEBSL}
CODES_UE_VALIDES_DE_DROIT = {ADM, CMP} # validation "de droit"
CODES_UE_VALIDES = CODES_UE_VALIDES_DE_DROIT | {ADJ, ADJR, ADSUP}
"UE validée"
CODES_UE_CAPITALISANTS = {ADM}
"UE validée (attribution des ECTS)"
CODES_UE_CAPITALISANTS = {ADM} # XXX non utilisé
"UE capitalisée"
CODES_JURY_RCUE = {ADM, ADJ, ADSUP, CMP, AJ, ATJ, RAT, DEF, ABAN}

View File

@ -367,7 +367,7 @@ def formsemestre_validation_etud_form(
H.append(
f"""<div class="link_defaillance">Ou <a class="stdlink" href="{
url_for("scolar.form_def", scodoc_dept=g.scodoc_dept, etudid=etudid,
url_for("scolar.form_def", scodoc_dept=g.scodoc_dept, etudid=etudid,
formsemestre_id=formsemestre_id)
}">déclarer l'étudiant comme défaillant dans ce semestre</a></div>"""
)
@ -683,7 +683,7 @@ def formsemestre_recap_parcours_table(
# 2eme ligne: notes
H.append(f"""<tr class="{class_sem} rcp_l2 sem_{sem["formsemestre_id"]}">""")
H.append(
f"""<td class="rcp_type_sem"
f"""<td class="rcp_type_sem"
style="background-color:{bgcolor};">&nbsp;</td>"""
)
if is_prev:
@ -808,7 +808,7 @@ def form_decision_manuelle(Se, formsemestre_id, etudid, desturl="", sortcol=None
return true;
}
</script>
<form method="get" action="formsemestre_validation_etud_manu" name="formvalidmanu" id="formvalidmanu" class="sfv_decisions sfv_decisions_manuelles" onsubmit="return check_sfv_form()">
<input type="hidden" name="etudid" value="%s"/>
<input type="hidden" name="formsemestre_id" value="%s"/>
@ -1028,7 +1028,7 @@ def do_formsemestre_validation_auto(formsemestre_id):
]
if conflicts:
H.append(
f"""<p><b>Attention:</b> {len(conflicts)} étudiants non modifiés
f"""<p><b>Attention:</b> {len(conflicts)} étudiants non modifiés
car décisions différentes déja saisies :
<ul>"""
)
@ -1190,12 +1190,16 @@ def formsemestre_validate_previous_ue(formsemestre: FormSemestre, etud: Identite
<p class="help">Utiliser cette page pour enregistrer des UEs validées antérieurement,
<em>dans un semestre hors ScoDoc</em>.</p>
<p class="expl"><b>Les UE validées dans ScoDoc sont
automatiquement prises en compte</b>.
<p class="expl"><b>Les UE validées dans ScoDoc sont
automatiquement prises en compte</b>.
</p>
<p>Cette page est surtout utile pour les étudiants ayant
suivi un début de cursus dans <b>un autre établissement</b>, ou qui
suivi un début de cursus dans <b>un autre établissement</b>, ou qui
ont suivi une UE à l'étranger ou dans un semestre géré <b>sans ScoDoc</b>.
</>
<p>Il est aussi nécessaire de valider les UEs antérieures en cas de changement
de référentiel de compétence en cours de cursus (par exemple si un étudiant redouble et
que le programme change de référentiel entre temps).
</p>
<p>Pour les semestres précédents gérés avec ScoDoc, passer par la page jury normale.
</p>
@ -1277,7 +1281,7 @@ def _get_etud_ue_cap_html(etud: Identite, formsemestre: FormSemestre) -> str:
H = [
f"""<div class="sco_box sco_lightgreen_bg ue_list_etud_validations">
<div class="sco_box_title">Validations d'UEs dans cette formation</div>
<div class="help">Liste de toutes les UEs validées par {etud.html_link_fiche()},
<div class="help">Liste de toutes les UEs validées par {etud.html_link_fiche()},
sur des semestres ou déclarées comme "antérieures" (externes).
</div>
<ul class="liste_validations">"""
@ -1296,7 +1300,7 @@ def _get_etud_ue_cap_html(etud: Identite, formsemestre: FormSemestre) -> str:
H.append(
f"""
<form class="inline-form">
<button
<button
data-v_id="{validation.id}" data-type="validation_ue" data-etudid="{etud.id}"
>effacer</button>
</form>

View File

@ -23,7 +23,7 @@
<div class="scoplement">
{% if validation %}
<div>Validation de {{niv['ue_'+sem].acronyme}}</div>
<div>Jury de {{validation.formsemestre.titre_annee()
<div>Jury de {{validation.formsemestre.titre_annee()
if validation.formsemestre else "-"}}</div>
<div>enregistrée le {{
validation.event_date.strftime("%d/%m/%Y à %H:%M")
@ -48,9 +48,9 @@
<div class="parcour_formation">
<div class="titre_parcours">
Validations de {{sco.etud.html_link_fiche()|safe}}
Validations de {{sco.etud.html_link_fiche()|safe}}
{% if parcour %}
parcours {{parcour.code}} « {{parcour.libelle}} »
parcours {{parcour.code}} « {{parcour.libelle}} »
{% else %}
non inscrit{{sco.etud.e}} à un parcours de la spécialité
{% endif %}
@ -64,7 +64,7 @@
</div>
<div class="niveaux">
{% for annee, niv in comp['niveaux'].items() %}
<div class="niveau comp-c{{color_idx}}-{{annee}}"
<div class="niveau comp-c{{color_idx}}-{{annee}}"
style="--color: var(--col-c{{color_idx}}-{{annee}});">
<div class="titre_niveau n{{annee}}">
<span class="parcs">
@ -120,10 +120,10 @@
if validation.date else "-"
}}
</div>
<div>par le jury de {{validation.formsemestre.titre_annee()
<div>par le jury de {{validation.formsemestre.titre_annee()
if validation.formsemestre else "-"}}
</div>
</div>
</div>
{% endif %}
</div>
</div>
@ -164,7 +164,7 @@
</div>
{% endif %}
<div class="help">
<div class="help">
<p>Cette page montre les validations d'UEs et de niveaux de compétences (RCUEs)
de {{sco.etud.html_link_fiche()|safe}}
@ -182,18 +182,26 @@ du référentiel de compétence <a class="stdlink" href="{{
</p>
<p>Seuls les UEs et niveaux de ce référentiel sont montrés. Si le référentiel a
changé, enregistrer des validations "antérieures".
changé, <a class="stdlink" href="{{
url_for( 'notes.formsemestre_validate_previous_ue',
scodoc_dept=g.scodoc_dept,
etudid=sco.etud.id,
formsemestre_id=sco.formsemestre.id)
}}">enregistrer des validations "antérieures"</a>.
</p>
<p>Le symbole <span class="parc">TC</span> désigne un niveau du tronc commun
(c'est à dire présent dans tous les parcours de la spécialité). </p>
(c'est à dire présent dans tous les parcours de la spécialité). </p>
{% if edit %}
<p>Les validations sont enregistrées au fur et à mesure.
Attention, cette page permet une saisie "manuelle", la cohérence des décisions
n'est pas vérifiée (ni avec les notes, ni avec les décisions d'UEs, ni entre
années), et les <tt>ADSUP</tt> ne sont pas automatiquement générés. Privilégiez
lorsque c'est possible la saisie par
<p>Les validations sont enregistrées au fur et à mesure.</p>
<p>
⚠️ Attention, cette page permet une saisie "manuelle", la cohérence des décisions
n'est pas vérifiée: ni avec les notes, ni avec les décisions d'UEs
(qu'il vous faudra probablement saisir aussi), ni entre années.
Les <tt>ADSUP</tt> ne sont pas automatiquement générés.
<br>
Privilégiez lorsque c'est possible la saisie par
<a class="stdlink" href="{{url_for('notes.formsemestre_validation_but',
scodoc_dept=g.scodoc_dept,
etudid=sco.etud.id,
@ -216,7 +224,7 @@ function record_rcue_validation(event, niveau_id) {
etudid=sco.etud.id
)
}}';
fetch(record_url, {
method: 'POST',
headers: {
@ -244,4 +252,4 @@ function record_rcue_validation(event, niveau_id) {
}
</script>
{% endblock %}
{% endblock %}

View File

@ -129,7 +129,7 @@ cp -p "$SCODOC_DIR"/tools/etc/scodoc9.service "$slash"/etc/systemd/system/ || di
# Répertoire DEBIAN
mv "$SCODOC_DIR"/tools/debian "$slash"/DEBIAN || die "can't install DEBIAN dir"
chmod 755 "$slash"/DEBIAN/*inst || die "can't chmod debian scripts"
chmod 750 "$slash"/DEBIAN/*inst || die "can't chmod debian scripts"
# ------------ CREATION DU VIRTUALENV
#echo "Creating python3 virtualenv..."