forked from ScoDoc/ScoDoc
fixes: modalite, ...
This commit is contained in:
parent
379b2591fd
commit
cae4686fc4
@ -33,7 +33,7 @@ from app.models.formations import (
|
|||||||
from app.models.formsemestre import (
|
from app.models.formsemestre import (
|
||||||
FormSemestre,
|
FormSemestre,
|
||||||
NotesFormsemestreEtape,
|
NotesFormsemestreEtape,
|
||||||
FormModalite,
|
NotesFormModalite,
|
||||||
NotesFormsemestreUECoef,
|
NotesFormsemestreUECoef,
|
||||||
NotesFormsemestreUEComputationExpr,
|
NotesFormsemestreUEComputationExpr,
|
||||||
NotesFormsemestreCustomMenu,
|
NotesFormsemestreCustomMenu,
|
||||||
|
@ -88,6 +88,7 @@ class NotesModule(db.Model):
|
|||||||
heures_td = db.Column(db.Float)
|
heures_td = db.Column(db.Float)
|
||||||
heures_tp = db.Column(db.Float)
|
heures_tp = db.Column(db.Float)
|
||||||
coefficient = db.Column(db.Float) # coef PPN
|
coefficient = db.Column(db.Float) # coef PPN
|
||||||
|
ects = db.Column(db.Float) # Crédits ECTS
|
||||||
ue_id = db.Column(db.Integer, db.ForeignKey("notes_ue.id"), index=True)
|
ue_id = db.Column(db.Integer, db.ForeignKey("notes_ue.id"), index=True)
|
||||||
formation_id = db.Column(db.Integer, db.ForeignKey("notes_formations.id"))
|
formation_id = db.Column(db.Integer, db.ForeignKey("notes_formations.id"))
|
||||||
matiere_id = db.Column(db.Integer, db.ForeignKey("notes_matieres.id"))
|
matiere_id = db.Column(db.Integer, db.ForeignKey("notes_matieres.id"))
|
||||||
|
@ -25,7 +25,7 @@ class FormSemestre(db.Model):
|
|||||||
date_debut = db.Column(db.Date())
|
date_debut = db.Column(db.Date())
|
||||||
date_fin = db.Column(db.Date())
|
date_fin = db.Column(db.Date())
|
||||||
etat = db.Column(db.Boolean(), nullable=False, default=True) # False si verrouillé
|
etat = db.Column(db.Boolean(), nullable=False, default=True) # False si verrouillé
|
||||||
modalite = db.Column(db.String(16), db.ForeignKey("form_modalite.modalite"))
|
modalite = db.Column(db.String(16), db.ForeignKey("notes_form_modalites.modalite"))
|
||||||
# gestion compensation sem DUT:
|
# gestion compensation sem DUT:
|
||||||
gestion_compensation = db.Column(db.Boolean(), nullable=False, default=False)
|
gestion_compensation = db.Column(db.Boolean(), nullable=False, default=False)
|
||||||
# ne publie pas le bulletin XML:
|
# ne publie pas le bulletin XML:
|
||||||
@ -52,7 +52,7 @@ class FormSemestre(db.Model):
|
|||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
super(FormSemestre, self).__init__(**kwargs)
|
super(FormSemestre, self).__init__(**kwargs)
|
||||||
if self.modalite is None:
|
if self.modalite is None:
|
||||||
self.modalite = FormModalite.DEFAULT_MODALITE
|
self.modalite = NotesFormModalite.DEFAULT_MODALITE
|
||||||
|
|
||||||
|
|
||||||
# Association id des utilisateurs responsables (aka directeurs des etudes) du semestre
|
# Association id des utilisateurs responsables (aka directeurs des etudes) du semestre
|
||||||
@ -79,11 +79,13 @@ class NotesFormsemestreEtape(db.Model):
|
|||||||
etape_apo = db.Column(db.String(APO_CODE_STR_LEN))
|
etape_apo = db.Column(db.String(APO_CODE_STR_LEN))
|
||||||
|
|
||||||
|
|
||||||
class FormModalite(db.Model):
|
class NotesFormModalite(db.Model):
|
||||||
"""Modalités de formation, utilisées pour la présentation
|
"""Modalités de formation, utilisées pour la présentation
|
||||||
(grouper les semestres, générer des codes, etc.)
|
(grouper les semestres, générer des codes, etc.)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
__tablename__ = "notes_form_modalites"
|
||||||
|
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
modalite = db.Column(db.String(16), unique=True, index=True) # code
|
modalite = db.Column(db.String(16), unique=True, index=True) # code
|
||||||
titre = db.Column(db.Text()) # texte explicatif
|
titre = db.Column(db.Text()) # texte explicatif
|
||||||
@ -97,7 +99,7 @@ class FormModalite(db.Model):
|
|||||||
"""Create default modalities"""
|
"""Create default modalities"""
|
||||||
numero = 0
|
numero = 0
|
||||||
for (code, titre) in (
|
for (code, titre) in (
|
||||||
(FormModalite.DEFAULT_MODALITE, "Formation Initiale"),
|
(NotesFormModalite.DEFAULT_MODALITE, "Formation Initiale"),
|
||||||
("FAP", "Apprentissage"),
|
("FAP", "Apprentissage"),
|
||||||
("FC", "Formation Continue"),
|
("FC", "Formation Continue"),
|
||||||
("DEC", "Formation Décalées"),
|
("DEC", "Formation Décalées"),
|
||||||
@ -108,9 +110,9 @@ class FormModalite(db.Model):
|
|||||||
("EXT", "Extérieur"),
|
("EXT", "Extérieur"),
|
||||||
("OTHER", "Autres formations"),
|
("OTHER", "Autres formations"),
|
||||||
):
|
):
|
||||||
modalite = FormModalite.query.filter_by(modalite=code).first()
|
modalite = NotesFormModalite.query.filter_by(modalite=code).first()
|
||||||
if modalite is None:
|
if modalite is None:
|
||||||
modalite = FormModalite(modalite=code, titre=titre, numero=numero)
|
modalite = NotesFormModalite(modalite=code, titre=titre, numero=numero)
|
||||||
db.session.add(modalite)
|
db.session.add(modalite)
|
||||||
numero += 1
|
numero += 1
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
@ -249,7 +251,7 @@ class NotesEvaluation(db.Model):
|
|||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
evaluation_id = db.synonym("id")
|
evaluation_id = db.synonym("id")
|
||||||
moduleimpl_id = db.Column(
|
moduleimpl_id = db.Column(
|
||||||
db.Integer, db.ForeignKey("notes_moduleimpl.moduleimpl_id"), index=True
|
db.Integer, db.ForeignKey("notes_moduleimpl.id"), index=True
|
||||||
)
|
)
|
||||||
jour = db.Column(db.Date)
|
jour = db.Column(db.Date)
|
||||||
heure_debut = db.Column(db.Time)
|
heure_debut = db.Column(db.Time)
|
||||||
|
@ -195,10 +195,12 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Liste des ID de semestres
|
# Liste des ID de semestres
|
||||||
cnx = ndb.GetDBConnexion()
|
if F["type_parcours"] is not None:
|
||||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
parcours = sco_codes_parcours.get_parcours_from_code(F["type_parcours"])
|
||||||
cursor.execute("select semestre_id from notes_semestres")
|
NB_SEM = parcours.NB_SEM
|
||||||
semestre_id_list = [str(x[0]) for x in cursor.fetchall()]
|
else:
|
||||||
|
NB_SEM = 10 # fallback, max 10 semestres
|
||||||
|
semestre_id_list = [-1] + [str(x) for x in range(1, NB_SEM + 1)]
|
||||||
semestre_id_labels = []
|
semestre_id_labels = []
|
||||||
for sid in semestre_id_list:
|
for sid in semestre_id_list:
|
||||||
if sid == "-1":
|
if sid == "-1":
|
||||||
@ -680,10 +682,10 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False):
|
|||||||
|
|
||||||
if tf[0] == 0 or msg:
|
if tf[0] == 0 or msg:
|
||||||
return (
|
return (
|
||||||
'<p>Formation <a class="discretelink" href="ue_list?formation_id=%(formation_id)s"><em>%(titre)s</em> (%(acronyme)s), version %(version)d, code %(formation_code)s</a></p>'
|
'<p>Formation <a class="discretelink" href="ue_list?formation_id=%(formation_id)s"><em>%(titre)s</em> (%(acronyme)s), version %(version)s, code %(formation_code)s</a></p>'
|
||||||
% F
|
% F
|
||||||
+ msg
|
+ msg
|
||||||
+ tf[1]
|
+ str(tf[1])
|
||||||
)
|
)
|
||||||
elif tf[0] == -1:
|
elif tf[0] == -1:
|
||||||
return "<h4>annulation</h4>"
|
return "<h4>annulation</h4>"
|
||||||
|
@ -156,7 +156,6 @@ class SemSet(dict):
|
|||||||
)
|
)
|
||||||
|
|
||||||
ndb.SimpleQuery(
|
ndb.SimpleQuery(
|
||||||
self.context,
|
|
||||||
"INSERT INTO notes_semset_formsemestre (formsemestre_id, semset_id) VALUES (%(formsemestre_id)s, %(semset_id)s)",
|
"INSERT INTO notes_semset_formsemestre (formsemestre_id, semset_id) VALUES (%(formsemestre_id)s, %(semset_id)s)",
|
||||||
{"formsemestre_id": formsemestre_id, "semset_id": self.semset_id},
|
{"formsemestre_id": formsemestre_id, "semset_id": self.semset_id},
|
||||||
)
|
)
|
||||||
@ -164,7 +163,6 @@ class SemSet(dict):
|
|||||||
|
|
||||||
def remove(self, formsemestre_id):
|
def remove(self, formsemestre_id):
|
||||||
ndb.SimpleQuery(
|
ndb.SimpleQuery(
|
||||||
self.context,
|
|
||||||
"DELETE FROM notes_semset_formsemestre WHERE semset_id=%(semset_id)s AND formsemestre_id=%(formsemestre_id)s",
|
"DELETE FROM notes_semset_formsemestre WHERE semset_id=%(semset_id)s AND formsemestre_id=%(formsemestre_id)s",
|
||||||
{"formsemestre_id": formsemestre_id, "semset_id": self.semset_id},
|
{"formsemestre_id": formsemestre_id, "semset_id": self.semset_id},
|
||||||
)
|
)
|
||||||
|
@ -73,7 +73,9 @@ class ScoTag(object):
|
|||||||
if not self.title:
|
if not self.title:
|
||||||
raise ScoValueError("invalid empty tag")
|
raise ScoValueError("invalid empty tag")
|
||||||
r = ndb.SimpleDictFetch(
|
r = ndb.SimpleDictFetch(
|
||||||
"SELECT * FROM " + self.tag_table + " WHERE title = %(title)s",
|
"SELECT id as tag_id, * FROM "
|
||||||
|
+ self.tag_table
|
||||||
|
+ " WHERE title = %(title)s",
|
||||||
{"title": self.title},
|
{"title": self.title},
|
||||||
)
|
)
|
||||||
if r:
|
if r:
|
||||||
@ -97,8 +99,7 @@ class ScoTag(object):
|
|||||||
"""
|
"""
|
||||||
args = {"tag_id": self.tag_id}
|
args = {"tag_id": self.tag_id}
|
||||||
ndb.SimpleQuery(
|
ndb.SimpleQuery(
|
||||||
self.context,
|
"DELETE FROM " + self.tag_table + " t WHERE t.id = %(tag_id)s",
|
||||||
"DELETE FROM " + self.tag_table + " t WHERE t.tag_id = %(tag_id)s",
|
|
||||||
args,
|
args,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -106,7 +107,6 @@ class ScoTag(object):
|
|||||||
"""Associate tag to given object"""
|
"""Associate tag to given object"""
|
||||||
args = {self.obj_colname: object_id, "tag_id": self.tag_id}
|
args = {self.obj_colname: object_id, "tag_id": self.tag_id}
|
||||||
r = ndb.SimpleDictFetch(
|
r = ndb.SimpleDictFetch(
|
||||||
self.context,
|
|
||||||
"SELECT * FROM "
|
"SELECT * FROM "
|
||||||
+ self.assoc_table
|
+ self.assoc_table
|
||||||
+ " a WHERE a."
|
+ " a WHERE a."
|
||||||
@ -120,7 +120,7 @@ class ScoTag(object):
|
|||||||
# log("tag %s with %s" % (object_id, self.title))
|
# log("tag %s with %s" % (object_id, self.title))
|
||||||
cnx = ndb.GetDBConnexion()
|
cnx = ndb.GetDBConnexion()
|
||||||
query = f"""INSERT INTO {self.assoc_table}
|
query = f"""INSERT INTO {self.assoc_table}
|
||||||
(tag_id, f{self.obj_colname})
|
(tag_id, {self.obj_colname})
|
||||||
VALUES"""
|
VALUES"""
|
||||||
ndb.SimpleQuery(
|
ndb.SimpleQuery(
|
||||||
query + " (%(tag_id)s, %(object_id)s)",
|
query + " (%(tag_id)s, %(object_id)s)",
|
||||||
@ -136,7 +136,6 @@ class ScoTag(object):
|
|||||||
# log("removing tag %s from %s" % (self.title, object_id))
|
# log("removing tag %s from %s" % (self.title, object_id))
|
||||||
args = {"object_id": object_id, "tag_id": self.tag_id}
|
args = {"object_id": object_id, "tag_id": self.tag_id}
|
||||||
ndb.SimpleQuery(
|
ndb.SimpleQuery(
|
||||||
self.context,
|
|
||||||
"DELETE FROM "
|
"DELETE FROM "
|
||||||
+ self.assoc_table
|
+ self.assoc_table
|
||||||
+ " a WHERE a."
|
+ " a WHERE a."
|
||||||
@ -145,7 +144,6 @@ class ScoTag(object):
|
|||||||
args,
|
args,
|
||||||
)
|
)
|
||||||
r = ndb.SimpleDictFetch(
|
r = ndb.SimpleDictFetch(
|
||||||
self.context,
|
|
||||||
"""SELECT * FROM notes_modules_tags mt WHERE tag_id = %(tag_id)s
|
"""SELECT * FROM notes_modules_tags mt WHERE tag_id = %(tag_id)s
|
||||||
""",
|
""",
|
||||||
args,
|
args,
|
||||||
@ -153,8 +151,7 @@ class ScoTag(object):
|
|||||||
if not r:
|
if not r:
|
||||||
# tag no more used, delete
|
# tag no more used, delete
|
||||||
ndb.SimpleQuery(
|
ndb.SimpleQuery(
|
||||||
self.context,
|
"""DELETE FROM notes_tags t WHERE t.id = %(tag_id)s""",
|
||||||
"""DELETE FROM notes_tags t WHERE t.tag_id = %(tag_id)s""",
|
|
||||||
args,
|
args,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -172,7 +169,6 @@ class ModuleTag(ScoTag):
|
|||||||
if not formation_code:
|
if not formation_code:
|
||||||
# tous les modules de toutes les formations !
|
# tous les modules de toutes les formations !
|
||||||
r = ndb.SimpleDictFetch(
|
r = ndb.SimpleDictFetch(
|
||||||
self.context,
|
|
||||||
"SELECT id AS"
|
"SELECT id AS"
|
||||||
+ self.obj_colname
|
+ self.obj_colname
|
||||||
+ " FROM "
|
+ " FROM "
|
||||||
@ -184,7 +180,6 @@ class ModuleTag(ScoTag):
|
|||||||
args["formation_code"] = formation_code
|
args["formation_code"] = formation_code
|
||||||
|
|
||||||
r = ndb.SimpleDictFetch(
|
r = ndb.SimpleDictFetch(
|
||||||
self.context,
|
|
||||||
"""SELECT mt.module_id
|
"""SELECT mt.module_id
|
||||||
FROM notes_modules_tags mt, notes_modules m, notes_formations f
|
FROM notes_modules_tags mt, notes_modules m, notes_formations f
|
||||||
WHERE mt.tag_id = %(tag_id)s
|
WHERE mt.tag_id = %(tag_id)s
|
||||||
@ -220,7 +215,7 @@ def module_tag_list(context, module_id=""):
|
|||||||
r = ndb.SimpleDictFetch(
|
r = ndb.SimpleDictFetch(
|
||||||
"""SELECT t.title
|
"""SELECT t.title
|
||||||
FROM notes_modules_tags mt, notes_tags t
|
FROM notes_modules_tags mt, notes_tags t
|
||||||
WHERE mt.tag_id = t.tag_id
|
WHERE mt.tag_id = t.id
|
||||||
AND mt.module_id = %(module_id)s
|
AND mt.module_id = %(module_id)s
|
||||||
""",
|
""",
|
||||||
{"module_id": module_id},
|
{"module_id": module_id},
|
||||||
|
@ -19,9 +19,8 @@ from flask.cli import with_appcontext
|
|||||||
from app import create_app, cli, db
|
from app import create_app, cli, db
|
||||||
|
|
||||||
from app.auth.models import User, Role, UserRole
|
from app.auth.models import User, Role, UserRole
|
||||||
|
|
||||||
from app import models
|
from app import models
|
||||||
from app.models import ScoPreferences, FormSemestre, FormModalite
|
|
||||||
from app.views import notes, scolar, absences
|
from app.views import notes, scolar, absences
|
||||||
import app.utils as utils
|
import app.utils as utils
|
||||||
|
|
||||||
@ -67,9 +66,6 @@ def make_shell_context():
|
|||||||
"logout_user": logout_user,
|
"logout_user": logout_user,
|
||||||
"admin": admin,
|
"admin": admin,
|
||||||
"ctx": app.test_request_context(),
|
"ctx": app.test_request_context(),
|
||||||
# "FormModalite": FormModalite,
|
|
||||||
# "ScoPreferences": ScoPreferences,
|
|
||||||
# "FormSemestre": FormSemestre,
|
|
||||||
"models": models,
|
"models": models,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,6 +94,8 @@ def user_db_init(): # user-db-init
|
|||||||
u=user
|
u=user
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
# Modalités:
|
||||||
|
models.NotesFormModalite.insert_modalites()
|
||||||
|
|
||||||
|
|
||||||
@app.cli.command()
|
@app.cli.command()
|
||||||
|
Loading…
Reference in New Issue
Block a user