forked from ScoDoc/ScoDoc
Compare commits
8 Commits
2e1dcce69d
...
79b5530813
Author | SHA1 | Date | |
---|---|---|---|
|
79b5530813 | ||
|
25b0648284 | ||
39e31983ee | |||
175c66c834 | |||
|
6842669ffe | ||
fffba011ea | |||
89db5cf858 | |||
9e4c19a292 |
@ -110,7 +110,7 @@ def liste_etudiants(dept: str, *args, sem_id): # XXX TODO A REVOIR
|
||||
return error_response(501, message="Not implemented")
|
||||
|
||||
|
||||
@bp.route("/departements/<string:dept>/semestres_actifs", methods=["GET"])
|
||||
@bp.route("/departements/<string:dept>/semestres_courant", methods=["GET"])
|
||||
@token_auth.login_required
|
||||
def liste_semestres_courant(dept: str):
|
||||
"""
|
||||
@ -126,6 +126,7 @@ def liste_semestres_courant(dept: str):
|
||||
|
||||
return jsonify(data)
|
||||
|
||||
|
||||
@bp.route(
|
||||
"/departements/<string:dept>/formations/<int:formation_id>/referentiel_competences",
|
||||
methods=["GET"],
|
||||
@ -191,6 +192,7 @@ def etudiants_courant():
|
||||
return jsonify(data)
|
||||
# return error_response(501, message="Not implemented")
|
||||
|
||||
|
||||
@bp.route("/etudiant/etudid/<int:etudid>", methods=["GET"])
|
||||
@bp.route("/etudiant/nip/<int:nip>", methods=["GET"])
|
||||
@bp.route("/etudiant/ine/<int:ine>", methods=["GET"])
|
||||
@ -210,6 +212,7 @@ def etudiant(etudid=None, nip=None, ine=None):
|
||||
|
||||
return jsonify(data)
|
||||
|
||||
|
||||
@bp.route("/etudiant/etudid/<int:etudid>/formsemestres")
|
||||
@bp.route("/etudiant/nip/<int:nip>/formsemestres")
|
||||
@bp.route("/etudiant/ine/<int:ine>/formsemestres")
|
||||
@ -303,6 +306,7 @@ def etudiant_groups(formsemestre_id: int, etudid=None, nip=None, ine=None):
|
||||
|
||||
return jsonify(data)
|
||||
|
||||
|
||||
##############################################" Formations ############################################################
|
||||
|
||||
|
||||
@ -490,7 +494,7 @@ def set_groups(
|
||||
return error_response(409, message="La requête ne peut être traitée en l’état actuel")
|
||||
|
||||
|
||||
################################################### Evaluations #######################################################
|
||||
############################################### Evaluations ###########################################################
|
||||
|
||||
|
||||
@bp.route("/evaluations/<int:moduleimpl_id>", methods=["GET"])
|
||||
@ -530,6 +534,47 @@ def evaluation_set_notes(eval_id: int, etudid: int, note: float):
|
||||
return error_response(501, message="Not implemented")
|
||||
|
||||
|
||||
#################################################### Jury #############################################################
|
||||
@bp.route("/jury/formsemestre/<int:formsemestre_id>/preparation_jury", methods=["GET"])
|
||||
def jury_preparation(formsemestre_id: int):
|
||||
"""
|
||||
Feuille de préparation du jury
|
||||
"""
|
||||
return error_response(501, message="Not implemented")
|
||||
|
||||
|
||||
@bp.route("/jury/formsemestre/<int:formsemestre_id>/decisions_jury", methods=["GET"])
|
||||
def jury_decisions(formsemestre_id: int):
|
||||
"""
|
||||
Retourne les décisions du jury suivant un formsemestre donné
|
||||
"""
|
||||
return error_response(501, message="Not implemented")
|
||||
|
||||
|
||||
@bp.route("/jury/set_decision/etudid?etudid=<int:etudid>&formsemestre_id=<int:formesemestre_id>&jury=<string"
|
||||
":decision_jury>&devenir=<string:devenir_jury>&assiduite=<bool>", methods=["POST"])
|
||||
@bp.route("/jury/set_decision/nip?etudid=<int:etudid>&formsemestre_id=<int:formesemestre_id>&jury=<string:decision_jury"
|
||||
">&devenir=<string:devenir_jury>&assiduite=<bool>", methods=["POST"])
|
||||
@bp.route("/jury/set_decision/ine?etudid=<int:etudid>&formsemestre_id=<int:formesemestre_id>&jury=<string:decision_jury"
|
||||
">&devenir=<string:devenir_jury>&assiduite=<bool>", methods=["POST"])
|
||||
def set_decision_jury(formsemestre_id: int, decision_jury: str, devenir_jury: str, assiduite: bool, etudid=None,
|
||||
nip=None, ine=None):
|
||||
"""
|
||||
Attribuer la décision du jury et le devenir à un etudiant
|
||||
"""
|
||||
return error_response(501, message="Not implemented")
|
||||
|
||||
|
||||
@bp.route("/jury/etudid/<int:etudid>/formsemestre/<int:formsemestre_id>/annule_decision", methods=["DELETE"])
|
||||
@bp.route("/jury/nip/<int:nip>/formsemestre/<int:formsemestre_id>/annule_decision", methods=["DELETE"])
|
||||
@bp.route("/jury/ine/<int:ine>/formsemestre/<int:formsemestre_id>/annule_decision", methods=["DELETE"])
|
||||
def annule_decision_jury(formsemestre_id: int, etudid=None, nip=None, ine=None):
|
||||
"""
|
||||
Supprime la déciosion du jury pour un étudiant donné
|
||||
"""
|
||||
return error_response(501, message="Not implemented")
|
||||
|
||||
|
||||
#################################################### Absences #########################################################
|
||||
|
||||
|
||||
|
@ -53,7 +53,7 @@ class BonusSport:
|
||||
etud_moy_gen et etud_moy_ue ne sont PAS modifiés (mais utilisés par certains bonus non additifs).
|
||||
"""
|
||||
|
||||
# En classique, active un bonus sur les UEs: (dans ce cas bonus_moy_gen reste None)
|
||||
# En classique, active un bonus sur les UEs: (dans ce cas bonus_moy_gen est ajusté pour le prendre en compte)
|
||||
classic_use_bonus_ues = False
|
||||
|
||||
# Attributs virtuels:
|
||||
|
@ -60,7 +60,7 @@ class ResultatsSemestreClassic(NotesTableCompat):
|
||||
)
|
||||
self.modimpl_inscr_df = inscr_mod.df_load_modimpl_inscr(self.formsemestre)
|
||||
self.modimpl_coefs = np.array(
|
||||
[m.module.coefficient for m in self.formsemestre.modimpls_sorted]
|
||||
[m.module.coefficient or 0.0 for m in self.formsemestre.modimpls_sorted]
|
||||
)
|
||||
self.modimpl_idx = {
|
||||
m.id: i for i, m in enumerate(self.formsemestre.modimpls_sorted)
|
||||
@ -113,11 +113,20 @@ class ResultatsSemestreClassic(NotesTableCompat):
|
||||
self.etud_moy_ue += self.bonus_ues # somme les dataframes
|
||||
self.etud_moy_ue.clip(lower=0.0, upper=20.0, inplace=True)
|
||||
bonus_mg = bonus.get_bonus_moy_gen()
|
||||
if bonus_mg is not None:
|
||||
if bonus_mg is None and self.bonus_ues is not None:
|
||||
# pas de bonus explicite sur la moyenne générale
|
||||
# on l'ajuste pour refléter les modifs d'UE, à l'aide des coefs d'UE.
|
||||
bonus_mg = (self.etud_coef_ue_df * self.bonus_ues).sum(
|
||||
axis=1
|
||||
) / self.etud_coef_ue_df.sum(axis=1)
|
||||
self.etud_moy_gen += bonus_mg
|
||||
self.etud_moy_gen.clip(lower=0.0, upper=20.0, inplace=True)
|
||||
# compat nt, utilisé pour l'afficher sur les bulletins:
|
||||
self.bonus = bonus_mg
|
||||
elif bonus_mg is not None:
|
||||
# Applique le bonus moyenne générale renvoyé
|
||||
self.etud_moy_gen += bonus_mg
|
||||
|
||||
self.etud_moy_gen.clip(lower=0.0, upper=20.0, inplace=True)
|
||||
# compat nt, utilisé pour l'afficher sur les bulletins:
|
||||
self.bonus = bonus_mg
|
||||
# --- UE capitalisées
|
||||
self.apply_capitalisation()
|
||||
|
||||
|
@ -315,6 +315,8 @@ def formsemestre_bulletinetud_dict(formsemestre_id, etudid, version="long"):
|
||||
u["cur_moy_ue_txt"] = "bonus appliqué sur les UEs"
|
||||
else:
|
||||
u["cur_moy_ue_txt"] = "bonus de %.3g points" % x
|
||||
if nt.bonus_ues is not None:
|
||||
u["cur_moy_ue_txt"] += " (+ues)"
|
||||
u["moy_ue_txt"] = scu.fmt_note(ue_status["moy"])
|
||||
if ue_status["coef_ue"] != None:
|
||||
u["coef_ue_txt"] = scu.fmt_coef(ue_status["coef_ue"])
|
||||
|
Loading…
Reference in New Issue
Block a user