BUT: pondération des UE dans les RCUEs

This commit is contained in:
Emmanuel Viennet 2022-06-24 12:39:54 +02:00
parent 00f66be1c5
commit 8a83e41698
4 changed files with 68 additions and 12 deletions

View File

@ -120,8 +120,10 @@ class RegroupementCoherentUE:
self.moy_ue_2_val = 0.0 self.moy_ue_2_val = 0.0
# Calcul de la moyenne au RCUE # Calcul de la moyenne au RCUE
if (self.moy_ue_1 is not None) and (self.moy_ue_2 is not None): if (self.moy_ue_1 is not None) and (self.moy_ue_2 is not None):
# Moyenne RCUE non pondérée (pour le moment -- TODO) # Moyenne RCUE (les pondérations par défaut sont 1.)
self.moy_rcue = (self.moy_ue_1 + self.moy_ue_2) / 2 self.moy_rcue = (
self.moy_ue_1 * ue_1.coef_rcue + self.moy_ue_2 * ue_2.coef_rcue
) / (ue_1.coef_rcue + ue_2.coef_rcue)
else: else:
self.moy_rcue = None self.moy_rcue = None

View File

@ -40,6 +40,9 @@ class UniteEns(db.Model):
# coef UE, utilise seulement si l'option use_ue_coefs est activée: # coef UE, utilise seulement si l'option use_ue_coefs est activée:
coefficient = db.Column(db.Float) coefficient = db.Column(db.Float)
# coef. pour le calcul de moyennes de RCUE. Par défaut, 1.
coef_rcue = db.Column(db.Float, nullable=False, default=1.0, server_default="1.0")
color = db.Column(db.Text()) color = db.Column(db.Text())
# BUT # BUT

View File

@ -78,6 +78,7 @@ _ueEditor = ndb.EditableTable(
"is_external", "is_external",
"code_apogee", "code_apogee",
"coefficient", "coefficient",
"coef_rcue",
"color", "color",
), ),
sortkey="numero", sortkey="numero",
@ -252,6 +253,7 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
initvalues = { initvalues = {
"semestre_idx": default_semestre_idx, "semestre_idx": default_semestre_idx,
"color": ue_guess_color_default(formation_id, default_semestre_idx), "color": ue_guess_color_default(formation_id, default_semestre_idx),
"coef_rcue": 1.0,
} }
submitlabel = "Créer cette UE" submitlabel = "Créer cette UE"
can_change_semestre_id = True can_change_semestre_id = True
@ -341,22 +343,43 @@ def ue_edit(ue_id=None, create=False, formation_id=None, default_semestre_idx=No
"allow_null": not is_apc, # ects requis en APC "allow_null": not is_apc, # ects requis en APC
}, },
), ),
( ]
"coefficient", if is_apc: # coef pour la moyenne RCUE
{ form_descr.append(
"size": 4, (
"type": "float", "coef_rcue",
"title": "Coefficient", {
"explanation": """les coefficients d'UE ne sont utilisés que "size": 4,
"type": "float",
"title": "Coef. RCUE",
"explanation": """pondération utilisée pour le calcul de la moyenne du RCUE. Laisser à 1, sauf si votre établissement a explicitement décidé de pondérations.
""",
"defaut": 1.0,
"allow_null": False,
"enabled": is_apc,
},
)
)
else: # non APC, coef d'UE
form_descr.append(
(
"coefficient",
{
"size": 4,
"type": "float",
"title": "Coefficient",
"explanation": """les coefficients d'UE ne sont utilisés que
lorsque l'option <em>Utiliser les coefficients d'UE pour calculer lorsque l'option <em>Utiliser les coefficients d'UE pour calculer
la moyenne générale</em> est activée. Par défaut, le coefficient la moyenne générale</em> est activée. Par défaut, le coefficient
d'une UE est simplement la somme des coefficients des modules dans d'une UE est simplement la somme des coefficients des modules dans
lesquels l'étudiant a des notes. lesquels l'étudiant a des notes.
Jamais utilisé en BUT. Jamais utilisé en BUT.
""", """,
"enabled": not is_apc, "enabled": not is_apc,
}, },
), )
)
form_descr += [
( (
"ue_code", "ue_code",
{ {

View File

@ -0,0 +1,28 @@
"""coef_rcue
Revision ID: c0c225192d61
Revises: 4311cc342dbd
Create Date: 2022-06-24 12:19:58.723862
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'c0c225192d61'
down_revision = '4311cc342dbd'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('notes_ue', sa.Column('coef_rcue', sa.Float(), server_default='1.0', nullable=False))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('notes_ue', 'coef_rcue')
# ### end Alembic commands ###