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 (
|
||||
FormSemestre,
|
||||
NotesFormsemestreEtape,
|
||||
FormModalite,
|
||||
NotesFormModalite,
|
||||
NotesFormsemestreUECoef,
|
||||
NotesFormsemestreUEComputationExpr,
|
||||
NotesFormsemestreCustomMenu,
|
||||
|
@ -88,6 +88,7 @@ class NotesModule(db.Model):
|
||||
heures_td = db.Column(db.Float)
|
||||
heures_tp = db.Column(db.Float)
|
||||
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)
|
||||
formation_id = db.Column(db.Integer, db.ForeignKey("notes_formations.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_fin = db.Column(db.Date())
|
||||
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 = db.Column(db.Boolean(), nullable=False, default=False)
|
||||
# ne publie pas le bulletin XML:
|
||||
@ -52,7 +52,7 @@ class FormSemestre(db.Model):
|
||||
def __init__(self, **kwargs):
|
||||
super(FormSemestre, self).__init__(**kwargs)
|
||||
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
|
||||
@ -79,11 +79,13 @@ class NotesFormsemestreEtape(db.Model):
|
||||
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
|
||||
(grouper les semestres, générer des codes, etc.)
|
||||
"""
|
||||
|
||||
__tablename__ = "notes_form_modalites"
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
modalite = db.Column(db.String(16), unique=True, index=True) # code
|
||||
titre = db.Column(db.Text()) # texte explicatif
|
||||
@ -97,7 +99,7 @@ class FormModalite(db.Model):
|
||||
"""Create default modalities"""
|
||||
numero = 0
|
||||
for (code, titre) in (
|
||||
(FormModalite.DEFAULT_MODALITE, "Formation Initiale"),
|
||||
(NotesFormModalite.DEFAULT_MODALITE, "Formation Initiale"),
|
||||
("FAP", "Apprentissage"),
|
||||
("FC", "Formation Continue"),
|
||||
("DEC", "Formation Décalées"),
|
||||
@ -108,9 +110,9 @@ class FormModalite(db.Model):
|
||||
("EXT", "Extérieur"),
|
||||
("OTHER", "Autres formations"),
|
||||
):
|
||||
modalite = FormModalite.query.filter_by(modalite=code).first()
|
||||
modalite = NotesFormModalite.query.filter_by(modalite=code).first()
|
||||
if modalite is None:
|
||||
modalite = FormModalite(modalite=code, titre=titre, numero=numero)
|
||||
modalite = NotesFormModalite(modalite=code, titre=titre, numero=numero)
|
||||
db.session.add(modalite)
|
||||
numero += 1
|
||||
db.session.commit()
|
||||
@ -249,7 +251,7 @@ class NotesEvaluation(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
evaluation_id = db.synonym("id")
|
||||
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)
|
||||
heure_debut = db.Column(db.Time)
|
||||
|
@ -195,10 +195,12 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False):
|
||||
)
|
||||
|
||||
# Liste des ID de semestres
|
||||
cnx = ndb.GetDBConnexion()
|
||||
cursor = cnx.cursor(cursor_factory=ndb.ScoDocCursor)
|
||||
cursor.execute("select semestre_id from notes_semestres")
|
||||
semestre_id_list = [str(x[0]) for x in cursor.fetchall()]
|
||||
if F["type_parcours"] is not None:
|
||||
parcours = sco_codes_parcours.get_parcours_from_code(F["type_parcours"])
|
||||
NB_SEM = parcours.NB_SEM
|
||||
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 = []
|
||||
for sid in semestre_id_list:
|
||||
if sid == "-1":
|
||||
@ -680,10 +682,10 @@ def do_formsemestre_createwithmodules(context, REQUEST=None, edit=False):
|
||||
|
||||
if tf[0] == 0 or msg:
|
||||
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
|
||||
+ msg
|
||||
+ tf[1]
|
||||
+ str(tf[1])
|
||||
)
|
||||
elif tf[0] == -1:
|
||||
return "<h4>annulation</h4>"
|
||||
|
@ -156,7 +156,6 @@ class SemSet(dict):
|
||||
)
|
||||
|
||||
ndb.SimpleQuery(
|
||||
self.context,
|
||||
"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},
|
||||
)
|
||||
@ -164,7 +163,6 @@ class SemSet(dict):
|
||||
|
||||
def remove(self, formsemestre_id):
|
||||
ndb.SimpleQuery(
|
||||
self.context,
|
||||
"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},
|
||||
)
|
||||
|
@ -73,7 +73,9 @@ class ScoTag(object):
|
||||
if not self.title:
|
||||
raise ScoValueError("invalid empty tag")
|
||||
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},
|
||||
)
|
||||
if r:
|
||||
@ -97,8 +99,7 @@ class ScoTag(object):
|
||||
"""
|
||||
args = {"tag_id": self.tag_id}
|
||||
ndb.SimpleQuery(
|
||||
self.context,
|
||||
"DELETE FROM " + self.tag_table + " t WHERE t.tag_id = %(tag_id)s",
|
||||
"DELETE FROM " + self.tag_table + " t WHERE t.id = %(tag_id)s",
|
||||
args,
|
||||
)
|
||||
|
||||
@ -106,7 +107,6 @@ class ScoTag(object):
|
||||
"""Associate tag to given object"""
|
||||
args = {self.obj_colname: object_id, "tag_id": self.tag_id}
|
||||
r = ndb.SimpleDictFetch(
|
||||
self.context,
|
||||
"SELECT * FROM "
|
||||
+ self.assoc_table
|
||||
+ " a WHERE a."
|
||||
@ -120,7 +120,7 @@ class ScoTag(object):
|
||||
# log("tag %s with %s" % (object_id, self.title))
|
||||
cnx = ndb.GetDBConnexion()
|
||||
query = f"""INSERT INTO {self.assoc_table}
|
||||
(tag_id, f{self.obj_colname})
|
||||
(tag_id, {self.obj_colname})
|
||||
VALUES"""
|
||||
ndb.SimpleQuery(
|
||||
query + " (%(tag_id)s, %(object_id)s)",
|
||||
@ -136,7 +136,6 @@ class ScoTag(object):
|
||||
# log("removing tag %s from %s" % (self.title, object_id))
|
||||
args = {"object_id": object_id, "tag_id": self.tag_id}
|
||||
ndb.SimpleQuery(
|
||||
self.context,
|
||||
"DELETE FROM "
|
||||
+ self.assoc_table
|
||||
+ " a WHERE a."
|
||||
@ -145,7 +144,6 @@ class ScoTag(object):
|
||||
args,
|
||||
)
|
||||
r = ndb.SimpleDictFetch(
|
||||
self.context,
|
||||
"""SELECT * FROM notes_modules_tags mt WHERE tag_id = %(tag_id)s
|
||||
""",
|
||||
args,
|
||||
@ -153,8 +151,7 @@ class ScoTag(object):
|
||||
if not r:
|
||||
# tag no more used, delete
|
||||
ndb.SimpleQuery(
|
||||
self.context,
|
||||
"""DELETE FROM notes_tags t WHERE t.tag_id = %(tag_id)s""",
|
||||
"""DELETE FROM notes_tags t WHERE t.id = %(tag_id)s""",
|
||||
args,
|
||||
)
|
||||
|
||||
@ -172,7 +169,6 @@ class ModuleTag(ScoTag):
|
||||
if not formation_code:
|
||||
# tous les modules de toutes les formations !
|
||||
r = ndb.SimpleDictFetch(
|
||||
self.context,
|
||||
"SELECT id AS"
|
||||
+ self.obj_colname
|
||||
+ " FROM "
|
||||
@ -184,7 +180,6 @@ class ModuleTag(ScoTag):
|
||||
args["formation_code"] = formation_code
|
||||
|
||||
r = ndb.SimpleDictFetch(
|
||||
self.context,
|
||||
"""SELECT mt.module_id
|
||||
FROM notes_modules_tags mt, notes_modules m, notes_formations f
|
||||
WHERE mt.tag_id = %(tag_id)s
|
||||
@ -220,7 +215,7 @@ def module_tag_list(context, module_id=""):
|
||||
r = ndb.SimpleDictFetch(
|
||||
"""SELECT t.title
|
||||
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
|
||||
""",
|
||||
{"module_id": module_id},
|
||||
|
@ -19,9 +19,8 @@ from flask.cli import with_appcontext
|
||||
from app import create_app, cli, db
|
||||
|
||||
from app.auth.models import User, Role, UserRole
|
||||
|
||||
from app import models
|
||||
from app.models import ScoPreferences, FormSemestre, FormModalite
|
||||
|
||||
from app.views import notes, scolar, absences
|
||||
import app.utils as utils
|
||||
|
||||
@ -67,9 +66,6 @@ def make_shell_context():
|
||||
"logout_user": logout_user,
|
||||
"admin": admin,
|
||||
"ctx": app.test_request_context(),
|
||||
# "FormModalite": FormModalite,
|
||||
# "ScoPreferences": ScoPreferences,
|
||||
# "FormSemestre": FormSemestre,
|
||||
"models": models,
|
||||
}
|
||||
|
||||
@ -98,6 +94,8 @@ def user_db_init(): # user-db-init
|
||||
u=user
|
||||
)
|
||||
)
|
||||
# Modalités:
|
||||
models.NotesFormModalite.insert_modalites()
|
||||
|
||||
|
||||
@app.cli.command()
|
||||
|
Loading…
Reference in New Issue
Block a user