Liste décisions sur page démission. Closes #499
This commit is contained in:
parent
2731a4728b
commit
0c5e338970
@ -59,7 +59,11 @@ class ApcValidationRCUE(db.Model):
|
|||||||
parcour = db.relationship("ApcParcours")
|
parcour = db.relationship("ApcParcours")
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"<{self.__class__.__name__} {self.id} {self.etud} {self.ue1}/{self.ue2}:{self.code!r}>"
|
return f"""<{self.__class__.__name__} {self.id} {self.etud} {
|
||||||
|
self.ue1}/{self.ue2}:{self.code!r}>"""
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"""décision sur RCUE {self.ue1.acronyme}/{self.ue2.acronyme}: {self.code}"""
|
||||||
|
|
||||||
def niveau(self) -> ApcNiveau:
|
def niveau(self) -> ApcNiveau:
|
||||||
"""Le niveau de compétence associé à cet RCUE."""
|
"""Le niveau de compétence associé à cet RCUE."""
|
||||||
@ -301,6 +305,9 @@ class ApcValidationAnnee(db.Model):
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"<{self.__class__.__name__} {self.id} {self.etud} BUT{self.ordre}/{self.annee_scolaire}:{self.code!r}>"
|
return f"<{self.__class__.__name__} {self.id} {self.etud} BUT{self.ordre}/{self.annee_scolaire}:{self.code!r}>"
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"""décision sur année BUT{self.ordre} {self.annee_scolaire} : {self.code}"""
|
||||||
|
|
||||||
def to_dict_bul(self) -> dict:
|
def to_dict_bul(self) -> dict:
|
||||||
"dict pour bulletins"
|
"dict pour bulletins"
|
||||||
return {
|
return {
|
||||||
|
@ -13,7 +13,6 @@ from app import email
|
|||||||
from app import log
|
from app import log
|
||||||
from app.auth.models import User
|
from app.auth.models import User
|
||||||
from app.models import SHORT_STR_LEN
|
from app.models import SHORT_STR_LEN
|
||||||
from app.models.formsemestre import FormSemestre
|
|
||||||
from app.models.moduleimpls import ModuleImpl
|
from app.models.moduleimpls import ModuleImpl
|
||||||
import app.scodoc.sco_utils as scu
|
import app.scodoc.sco_utils as scu
|
||||||
from app.scodoc import sco_preferences
|
from app.scodoc import sco_preferences
|
||||||
@ -170,10 +169,12 @@ class ScolarNews(db.Model):
|
|||||||
log(f"news: {news}")
|
log(f"news: {news}")
|
||||||
news.notify_by_mail()
|
news.notify_by_mail()
|
||||||
|
|
||||||
def get_news_formsemestre(self) -> FormSemestre:
|
def get_news_formsemestre(self) -> "FormSemestre":
|
||||||
"""formsemestre concerné par la nouvelle
|
"""formsemestre concerné par la nouvelle
|
||||||
None si inexistant
|
None si inexistant
|
||||||
"""
|
"""
|
||||||
|
from app.models.formsemestre import FormSemestre
|
||||||
|
|
||||||
formsemestre_id = None
|
formsemestre_id = None
|
||||||
if self.type == self.NEWS_INSCR:
|
if self.type == self.NEWS_INSCR:
|
||||||
formsemestre_id = self.object
|
formsemestre_id = self.object
|
||||||
|
@ -31,9 +31,11 @@ from app.models.groups import GroupDescr, Partition
|
|||||||
import app.scodoc.sco_utils as scu
|
import app.scodoc.sco_utils as scu
|
||||||
from app.models.but_refcomp import parcours_formsemestre
|
from app.models.but_refcomp import parcours_formsemestre
|
||||||
from app.models.etudiants import Identite
|
from app.models.etudiants import Identite
|
||||||
|
from app.models.formations import Formation
|
||||||
from app.models.modules import Module
|
from app.models.modules import Module
|
||||||
from app.models.moduleimpls import ModuleImpl
|
from app.models.moduleimpls import ModuleImpl
|
||||||
from app.models.ues import UniteEns
|
from app.models.ues import UniteEns
|
||||||
|
from app.models.validations import ScolarFormSemestreValidation
|
||||||
|
|
||||||
from app.scodoc import sco_codes_parcours
|
from app.scodoc import sco_codes_parcours
|
||||||
from app.scodoc import sco_preferences
|
from app.scodoc import sco_preferences
|
||||||
@ -648,6 +650,46 @@ class FormSemestre(db.Model):
|
|||||||
)
|
)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
def etud_validations_description_html(self, etudid: int) -> str:
|
||||||
|
"""Description textuelle des validations de jury de cet étudiant dans ce semestre"""
|
||||||
|
from app.models.but_validations import ApcValidationRCUE, ApcValidationAnnee
|
||||||
|
|
||||||
|
vals_sem = ScolarFormSemestreValidation.query.filter_by(
|
||||||
|
etudid=etudid, formsemestre_id=self.id, ue_id=None
|
||||||
|
).all()
|
||||||
|
vals_ues = (
|
||||||
|
ScolarFormSemestreValidation.query.filter_by(
|
||||||
|
etudid=etudid, formsemestre_id=self.id
|
||||||
|
)
|
||||||
|
.join(UniteEns)
|
||||||
|
.order_by(UniteEns.numero)
|
||||||
|
.all()
|
||||||
|
)
|
||||||
|
# Validations BUT:
|
||||||
|
vals_rcues = (
|
||||||
|
ApcValidationRCUE.query.filter_by(etudid=etudid, formsemestre_id=self.id)
|
||||||
|
.join(UniteEns, ApcValidationRCUE.ue1)
|
||||||
|
.order_by(UniteEns.numero)
|
||||||
|
.all()
|
||||||
|
)
|
||||||
|
vals_annee = (
|
||||||
|
ApcValidationAnnee.query.filter_by(
|
||||||
|
etudid=etudid,
|
||||||
|
annee_scolaire=self.annee_scolaire(),
|
||||||
|
)
|
||||||
|
.join(ApcValidationAnnee.formsemestre)
|
||||||
|
.join(FormSemestre.formation)
|
||||||
|
.filter(Formation.formation_code == self.formation.formation_code)
|
||||||
|
.all()
|
||||||
|
)
|
||||||
|
H = []
|
||||||
|
for vals in (vals_sem, vals_ues, vals_rcues, vals_annee):
|
||||||
|
if vals:
|
||||||
|
H.append(
|
||||||
|
f"""<ul><li>{"</li><li>".join(str(x) for x in vals)}</li></ul>"""
|
||||||
|
)
|
||||||
|
return "\n".join(H)
|
||||||
|
|
||||||
|
|
||||||
# Association id des utilisateurs responsables (aka directeurs des etudes) du semestre
|
# Association id des utilisateurs responsables (aka directeurs des etudes) du semestre
|
||||||
notes_formsemestre_responsables = db.Table(
|
notes_formsemestre_responsables = db.Table(
|
||||||
|
@ -53,11 +53,20 @@ class ScolarFormSemestreValidation(db.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
ue = db.relationship("UniteEns", lazy="select", uselist=False)
|
ue = db.relationship("UniteEns", lazy="select", uselist=False)
|
||||||
|
formsemestre = db.relationship(
|
||||||
|
"FormSemestre", lazy="select", uselist=False, foreign_keys=[formsemestre_id]
|
||||||
|
)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"{self.__class__.__name__}({self.formsemestre_id}, {self.etudid}, code={self.code}, ue={self.ue}, moy_ue={self.moy_ue})"
|
return f"{self.__class__.__name__}({self.formsemestre_id}, {self.etudid}, code={self.code}, ue={self.ue}, moy_ue={self.moy_ue})"
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
if self.ue_id:
|
||||||
|
return f"""décision sur UE {self.ue.acronyme}: {self.code}"""
|
||||||
|
return f"""décision sur semestre {self.formsemestre.titre_mois()} du {self.event_date.strftime("%d/%m/%Y")}"""
|
||||||
|
|
||||||
def to_dict(self) -> dict:
|
def to_dict(self) -> dict:
|
||||||
|
"as a dict"
|
||||||
d = dict(self.__dict__)
|
d = dict(self.__dict__)
|
||||||
d.pop("_sa_instance_state", None)
|
d.pop("_sa_instance_state", None)
|
||||||
return d
|
return d
|
||||||
@ -84,6 +93,7 @@ class ScolarAutorisationInscription(db.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def to_dict(self) -> dict:
|
def to_dict(self) -> dict:
|
||||||
|
"as a dict"
|
||||||
d = dict(self.__dict__)
|
d = dict(self.__dict__)
|
||||||
d.pop("_sa_instance_state", None)
|
d.pop("_sa_instance_state", None)
|
||||||
return d
|
return d
|
||||||
|
@ -2270,11 +2270,11 @@ def formsemestre_validation_but(
|
|||||||
return (
|
return (
|
||||||
"\n".join(H)
|
"\n".join(H)
|
||||||
+ f"""<div class="warning">Impossible de statuer sur cet étudiant:
|
+ f"""<div class="warning">Impossible de statuer sur cet étudiant:
|
||||||
il est démissionnaire ou défaillant (voir <a href="{
|
il est démissionnaire ou défaillant (voir <a class="stdlink" href="{
|
||||||
url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid)
|
url_for("scolar.ficheEtud", scodoc_dept=g.scodoc_dept, etudid=etudid)
|
||||||
}">sa fiche</a>)
|
}">sa fiche</a>)
|
||||||
</div>
|
</div>
|
||||||
<div><a href="{url_for(
|
<div><a class="stdlink" href="{url_for(
|
||||||
"notes.formsemestre_saisie_jury", scodoc_dept=g.scodoc_dept,
|
"notes.formsemestre_saisie_jury", scodoc_dept=g.scodoc_dept,
|
||||||
formsemestre_id=formsemestre_id, selected_etudid=etud.id
|
formsemestre_id=formsemestre_id, selected_etudid=etud.id
|
||||||
)}">retour à la liste</a></div>
|
)}">retour à la liste</a></div>
|
||||||
|
@ -1106,6 +1106,7 @@ def _form_dem_of_def(
|
|||||||
header = html_sco_header.sco_header(
|
header = html_sco_header.sco_header(
|
||||||
page_title=f"""{operation_name} de {etud.nomprenom} (du semestre {formsemestre.titre_mois()})"""
|
page_title=f"""{operation_name} de {etud.nomprenom} (du semestre {formsemestre.titre_mois()})"""
|
||||||
)
|
)
|
||||||
|
validations_descr = formsemestre.etud_validations_description_html(etudid)
|
||||||
return f"""
|
return f"""
|
||||||
{header}
|
{header}
|
||||||
<h2><font color="#FF0000">{operation_name} de</font> {etud.nomprenom} ({formsemestre.titre_mois()})</h2>
|
<h2><font color="#FF0000">{operation_name} de</font> {etud.nomprenom} ({formsemestre.titre_mois()})</h2>
|
||||||
@ -1118,6 +1119,15 @@ def _form_dem_of_def(
|
|||||||
<input type="hidden" name="formsemestre_id" value="{formsemestre_id}">
|
<input type="hidden" name="formsemestre_id" value="{formsemestre_id}">
|
||||||
<div class="vertical_spacing_but"><input type="submit" value="Confirmer"></div>
|
<div class="vertical_spacing_but"><input type="submit" value="Confirmer"></div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<div class="rappel_decisions">
|
||||||
|
{'<p class="warning">Attention: il y a des décisions de jury déjà prises !</p>' if validations_descr else ""}
|
||||||
|
{validations_descr}
|
||||||
|
{('<p><a class="stdlink" href="'
|
||||||
|
+ url_for("notes.formsemestre_validation_but", scodoc_dept=g.scodoc_dept,
|
||||||
|
formsemestre_id=formsemestre_id,etudid=etudid)
|
||||||
|
+ '">modifier ces décisions</a></p>') if validations_descr else ""}
|
||||||
|
</div>
|
||||||
{html_sco_header.sco_footer()}
|
{html_sco_header.sco_footer()}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# -*- mode: python -*-
|
# -*- mode: python -*-
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
SCOVERSION = "9.3.48"
|
SCOVERSION = "9.3.49"
|
||||||
|
|
||||||
SCONAME = "ScoDoc"
|
SCONAME = "ScoDoc"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user