forked from ScoDoc/DocScoDoc
Pas d'UEs externes en BUT. Voir #542
This commit is contained in:
parent
1bd83a748f
commit
ec35ee0ab9
@ -349,7 +349,7 @@ class FormSemestre(db.Model):
|
|||||||
return [ModuleImpl.query.get(modimpl_id) for modimpl_id in cursor]
|
return [ModuleImpl.query.get(modimpl_id) for modimpl_id in cursor]
|
||||||
|
|
||||||
def can_be_edited_by(self, user):
|
def can_be_edited_by(self, user):
|
||||||
"""Vrai si user peut modifier ce semestre"""
|
"""Vrai si user peut modifier ce semestre (est chef ou l'un des responsables)"""
|
||||||
if not user.has_permission(Permission.ScoImplement): # pas chef
|
if not user.has_permission(Permission.ScoImplement): # pas chef
|
||||||
if not self.resp_can_edit or user.id not in [
|
if not self.resp_can_edit or user.id not in [
|
||||||
resp.id for resp in self.responsables
|
resp.id for resp in self.responsables
|
||||||
|
@ -1217,7 +1217,8 @@ def make_menu_autres_operations(
|
|||||||
"formsemestre_id": formsemestre.id,
|
"formsemestre_id": formsemestre.id,
|
||||||
"etudid": etud.id,
|
"etudid": etud.id,
|
||||||
},
|
},
|
||||||
"enabled": sco_permissions_check.can_validate_sem(formsemestre.id),
|
"enabled": sco_permissions_check.can_validate_sem(formsemestre.id)
|
||||||
|
and not formsemestre.formation.is_apc(),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Entrer décisions jury",
|
"title": "Entrer décisions jury",
|
||||||
|
@ -77,10 +77,10 @@ def convert_note_from_string(
|
|||||||
note,
|
note,
|
||||||
note_max,
|
note_max,
|
||||||
note_min=scu.NOTES_MIN,
|
note_min=scu.NOTES_MIN,
|
||||||
etudid=None,
|
etudid: int = None,
|
||||||
absents=None,
|
absents: list[int] = None,
|
||||||
tosuppress=None,
|
tosuppress: list[int] = None,
|
||||||
invalids=None,
|
invalids: list[int] = None,
|
||||||
):
|
):
|
||||||
"""converti une valeur (chaine saisie) vers une note numérique (float)
|
"""converti une valeur (chaine saisie) vers une note numérique (float)
|
||||||
Les listes absents, tosuppress et invalids sont modifiées
|
Les listes absents, tosuppress et invalids sont modifiées
|
||||||
|
@ -54,7 +54,7 @@ Solution proposée (nov 2014):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
import flask
|
import flask
|
||||||
from flask import flash, request
|
from flask import flash, g, request, url_for
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
from app.models.formsemestre import FormSemestre
|
from app.models.formsemestre import FormSemestre
|
||||||
|
|
||||||
@ -68,8 +68,6 @@ from app.scodoc import sco_edit_matiere
|
|||||||
from app.scodoc import sco_edit_module
|
from app.scodoc import sco_edit_module
|
||||||
from app.scodoc import sco_edit_ue
|
from app.scodoc import sco_edit_ue
|
||||||
from app.scodoc import sco_evaluation_db
|
from app.scodoc import sco_evaluation_db
|
||||||
from app.scodoc import sco_formations
|
|
||||||
from app.scodoc import sco_formsemestre
|
|
||||||
from app.scodoc import sco_moduleimpl
|
from app.scodoc import sco_moduleimpl
|
||||||
from app.scodoc import sco_saisie_notes
|
from app.scodoc import sco_saisie_notes
|
||||||
from app.scodoc import sco_etud
|
from app.scodoc import sco_etud
|
||||||
@ -217,7 +215,7 @@ def get_external_moduleimpl_id(formsemestre_id: int, ue_id: int) -> int:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# Web function
|
# Web view
|
||||||
def external_ue_create_form(formsemestre_id: int, etudid: int):
|
def external_ue_create_form(formsemestre_id: int, etudid: int):
|
||||||
"""Formulaire création UE externe + inscription étudiant et saisie note
|
"""Formulaire création UE externe + inscription étudiant et saisie note
|
||||||
- Demande UE: peut-être existante (liste les UE externes de cette formation),
|
- Demande UE: peut-être existante (liste les UE externes de cette formation),
|
||||||
@ -226,15 +224,18 @@ def external_ue_create_form(formsemestre_id: int, etudid: int):
|
|||||||
|
|
||||||
Note: pour l'édition éventuelle de ces informations, on utilisera les
|
Note: pour l'édition éventuelle de ces informations, on utilisera les
|
||||||
fonctions standards sur les UE/modules/notes
|
fonctions standards sur les UE/modules/notes
|
||||||
|
|
||||||
|
En BUT, pas d'UEs externes. Voir https://scodoc.org/git/ScoDoc/ScoDoc/issues/542
|
||||||
"""
|
"""
|
||||||
sem = sco_formsemestre.get_formsemestre(formsemestre_id)
|
formsemestre: FormSemestre = FormSemestre.query.get_or_404(formsemestre_id)
|
||||||
# Contrôle d'accès:
|
# Contrôle d'accès:
|
||||||
if not current_user.has_permission(Permission.ScoImplement):
|
if not formsemestre.can_be_edited_by(current_user):
|
||||||
if not sem["resp_can_edit"] or (current_user.id not in sem["responsables"]):
|
raise AccessDenied("vous n'avez pas le droit d'effectuer cette opération")
|
||||||
raise AccessDenied("vous n'avez pas le droit d'effectuer cette opération")
|
if formsemestre.formation.is_apc():
|
||||||
|
raise ScoValueError("Impossible d'ajouter une UE externe en BUT")
|
||||||
|
|
||||||
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
|
etud = sco_etud.get_etud_info(filled=True, etudid=etudid)[0]
|
||||||
formation_id = sem["formation_id"]
|
formation_id = formsemestre.formation.id
|
||||||
existing_external_ue = get_existing_external_ue(formation_id)
|
existing_external_ue = get_existing_external_ue(formation_id)
|
||||||
|
|
||||||
H = [
|
H = [
|
||||||
@ -251,8 +252,7 @@ def external_ue_create_form(formsemestre_id: int, etudid: int):
|
|||||||
""",
|
""",
|
||||||
]
|
]
|
||||||
html_footer = html_sco_header.sco_footer()
|
html_footer = html_sco_header.sco_footer()
|
||||||
Fo = sco_formations.formation_list(args={"formation_id": sem["formation_id"]})[0]
|
parcours = formsemestre.formation.get_parcours()
|
||||||
parcours = sco_codes_parcours.get_parcours_from_code(Fo["type_parcours"])
|
|
||||||
ue_types = [
|
ue_types = [
|
||||||
typ for typ in parcours.ALLOWED_UE_TYPES if typ != sco_codes_parcours.UE_SPORT
|
typ for typ in parcours.ALLOWED_UE_TYPES if typ != sco_codes_parcours.UE_SPORT
|
||||||
]
|
]
|
||||||
@ -341,9 +341,11 @@ def external_ue_create_form(formsemestre_id: int, etudid: int):
|
|||||||
cancelbutton="Annuler",
|
cancelbutton="Annuler",
|
||||||
)
|
)
|
||||||
|
|
||||||
bull_url = "formsemestre_bulletinetud?formsemestre_id=%s&etudid=%s" % (
|
bull_url = url_for(
|
||||||
formsemestre_id,
|
"notes.formsemestre_bulletinetud",
|
||||||
etudid,
|
scodoc_dept=g.scodoc_dept,
|
||||||
|
formsemestre_id=formsemestre_id,
|
||||||
|
etudid=etudid,
|
||||||
)
|
)
|
||||||
if tf[0] == 0:
|
if tf[0] == 0:
|
||||||
return "\n".join(H) + "\n" + tf[1] + html_footer
|
return "\n".join(H) + "\n" + tf[1] + html_footer
|
||||||
@ -351,7 +353,9 @@ def external_ue_create_form(formsemestre_id: int, etudid: int):
|
|||||||
return flask.redirect(bull_url)
|
return flask.redirect(bull_url)
|
||||||
else:
|
else:
|
||||||
note = tf[2]["note"].strip().upper()
|
note = tf[2]["note"].strip().upper()
|
||||||
note_value, invalid = sco_saisie_notes.convert_note_from_string(note, 20.0)
|
note_value, invalid = sco_saisie_notes.convert_note_from_string(
|
||||||
|
note, 20.0, etudid=etudid, absents=[], tosuppress=[], invalids=[]
|
||||||
|
)
|
||||||
if invalid:
|
if invalid:
|
||||||
return (
|
return (
|
||||||
"\n".join(H)
|
"\n".join(H)
|
||||||
@ -386,4 +390,5 @@ def external_ue_create_form(formsemestre_id: int, etudid: int):
|
|||||||
formsemestre_id,
|
formsemestre_id,
|
||||||
{etudid: note_value},
|
{etudid: note_value},
|
||||||
)
|
)
|
||||||
return flask.redirect(bull_url + "&head_message=Ajout%20effectué")
|
flash("Ajout effectué")
|
||||||
|
return flask.redirect(bull_url)
|
||||||
|
Loading…
Reference in New Issue
Block a user