1
0
forked from ScoDoc/ScoDoc

Specify server-side SQL default values

This commit is contained in:
Emmanuel Viennet 2021-08-10 00:23:30 +02:00
parent a34ab976e9
commit 02df06c29a
7 changed files with 55 additions and 27 deletions

View File

@ -126,9 +126,9 @@ En tant qu'utilisateur `scodoc`:
su scodoc # si besoin su scodoc # si besoin
cd /opt/scodoc cd /opt/scodoc
source venv/bin/activate source venv/bin/activate
flask db init #flask db init
flask db migrate -m "users and roles tables" #flask db migrate -m "initial database"
flask db upgrade #flask db upgrade
Puis initialisation de l'appli: Puis initialisation de l'appli:

View File

@ -69,7 +69,7 @@ class BilletAbsence(db.Model):
# raison de l'absence: # raison de l'absence:
description = db.Column(db.Text()) description = db.Column(db.Text())
# False: new, True: processed # False: new, True: processed
etat = db.Column(db.Boolean(), default=False) etat = db.Column(db.Boolean(), default=False, server_default="false")
entry_date = db.Column(db.DateTime(timezone=True), server_default=db.func.now()) entry_date = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
# true si l'absence _pourrait_ etre justifiée # true si l'absence _pourrait_ etre justifiée
justified = db.Column(db.Boolean(), default=False) justified = db.Column(db.Boolean(), default=False, server_default="false")

View File

@ -58,7 +58,9 @@ class Adresse(db.Model):
telephone = db.Column(db.Text) telephone = db.Column(db.Text)
telephonemobile = db.Column(db.Text) telephonemobile = db.Column(db.Text)
fax = db.Column(db.Text) fax = db.Column(db.Text)
typeadresse = db.Column(db.Text, default="domicile", nullable=False) typeadresse = db.Column(
db.Text, default="domicile", server_default="domicile", nullable=False
)
description = db.Column(db.Text) description = db.Column(db.Text)

View File

@ -18,14 +18,14 @@ class NotesFormation(db.Model):
acronyme = db.Column(db.String(SHORT_STR_LEN), nullable=False) acronyme = db.Column(db.String(SHORT_STR_LEN), nullable=False)
titre = db.Column(db.Text(), nullable=False) titre = db.Column(db.Text(), nullable=False)
titre_officiel = db.Column(db.Text(), nullable=False) titre_officiel = db.Column(db.Text(), nullable=False)
version = db.Column(db.Integer, default=1) version = db.Column(db.Integer, default=1, server_default="1")
formation_code = db.Column( formation_code = db.Column(
db.String(SHORT_STR_LEN), db.String(SHORT_STR_LEN),
server_default=db.text("notes_newid_fcod()"), server_default=db.text("notes_newid_fcod()"),
nullable=False, nullable=False,
) )
# nb: la fonction SQL notes_newid_fcod doit être créée à part # nb: la fonction SQL notes_newid_fcod doit être créée à part
type_parcours = db.Column(db.Integer, default=0) type_parcours = db.Column(db.Integer, default=0, server_default="0")
code_specialite = db.Column(db.String(SHORT_STR_LEN)) code_specialite = db.Column(db.String(SHORT_STR_LEN))
@ -42,7 +42,7 @@ class NotesUE(db.Model):
titre = db.Column(db.Text()) titre = db.Column(db.Text())
# Type d'UE: 0 normal ("fondamentale"), 1 "sport", 2 "projet et stage (LP)", # Type d'UE: 0 normal ("fondamentale"), 1 "sport", 2 "projet et stage (LP)",
# 4 "élective" # 4 "élective"
type = db.Column(db.Integer, default=0) type = db.Column(db.Integer, default=0, server_default="0")
# Les UE sont "compatibles" (pour la capitalisation) ssi elles ont ^m code # Les UE sont "compatibles" (pour la capitalisation) ssi elles ont ^m code
# note: la fonction SQL notes_newid_ucod doit être créée à part # note: la fonction SQL notes_newid_ucod doit être créée à part
ue_code = db.Column( ue_code = db.Column(
@ -51,7 +51,7 @@ class NotesUE(db.Model):
nullable=False, nullable=False,
) )
ects = db.Column(db.Float) # nombre de credits ECTS ects = db.Column(db.Float) # nombre de credits ECTS
is_external = db.Column(db.Boolean(), default=False) is_external = db.Column(db.Boolean(), default=False, server_default="false")
# id de l'element pedagogique Apogee correspondant: # id de l'element pedagogique Apogee correspondant:
code_apogee = db.Column(db.String(APO_CODE_STR_LEN)) code_apogee = db.Column(db.String(APO_CODE_STR_LEN))
# 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:
@ -93,7 +93,7 @@ class NotesModule(db.Model):
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"))
# pas un id mais le numéro du semestre: 1, 2, ... # pas un id mais le numéro du semestre: 1, 2, ...
semestre_id = db.Column(db.Integer, nullable=False, default=1) semestre_id = db.Column(db.Integer, nullable=False, default=1, server_default="1")
numero = db.Column(db.Integer) # ordre de présentation numero = db.Column(db.Integer) # ordre de présentation
# id de l'element pedagogique Apogee correspondant: # id de l'element pedagogique Apogee correspondant:
code_apogee = db.Column(db.String(APO_CODE_STR_LEN)) code_apogee = db.Column(db.String(APO_CODE_STR_LEN))

View File

@ -20,26 +20,42 @@ class FormSemestre(db.Model):
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
formsemestre_id = db.synonym("id") formsemestre_id = db.synonym("id")
formation_id = db.Column(db.Integer, db.ForeignKey("notes_formations.id")) formation_id = db.Column(db.Integer, db.ForeignKey("notes_formations.id"))
semestre_id = db.Column(db.Integer, nullable=False, default=1) semestre_id = db.Column(db.Integer, nullable=False, default=1, server_default="1")
titre = db.Column(db.Text()) titre = db.Column(db.Text())
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, server_default="true"
) # False si verrouillé
modalite = db.Column(db.String(16), db.ForeignKey("notes_form_modalites.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, server_default="false"
)
# ne publie pas le bulletin XML: # ne publie pas le bulletin XML:
bul_hide_xml = db.Column(db.Boolean(), nullable=False, default=False) bul_hide_xml = db.Column(
db.Boolean(), nullable=False, default=False, server_default="false"
)
# semestres decales (pour gestion jurys): # semestres decales (pour gestion jurys):
gestion_semestrielle = db.Column(db.Boolean(), nullable=False, default=False) gestion_semestrielle = db.Column(
db.Boolean(), nullable=False, default=False, server_default="false"
)
# couleur fond bulletins HTML: # couleur fond bulletins HTML:
bul_bgcolor = db.Column(db.String(SHORT_STR_LEN), default="white") bul_bgcolor = db.Column(
db.String(SHORT_STR_LEN), default="white", server_default="white"
)
# autorise resp. a modifier semestre: # autorise resp. a modifier semestre:
resp_can_edit = db.Column(db.Boolean(), nullable=False, default=False) resp_can_edit = db.Column(
db.Boolean(), nullable=False, default=False, server_default="false"
)
# autorise resp. a modifier slt les enseignants: # autorise resp. a modifier slt les enseignants:
resp_can_change_ens = db.Column(db.Boolean(), nullable=False, default=True) resp_can_change_ens = db.Column(
db.Boolean(), nullable=False, default=True, server_default="true"
)
# autorise les ens a creer des evals: # autorise les ens a creer des evals:
ens_can_edit_eval = db.Column(db.Boolean(), nullable=False, default=False) ens_can_edit_eval = db.Column(
db.Boolean(), nullable=False, default=False, server_default="False"
)
# code element semestre Apogee, eg VRTW1 ou V2INCS4,V2INLS4 # code element semestre Apogee, eg VRTW1 ou V2INCS4,V2INLS4
elt_sem_apo = db.Column(db.String(APO_CODE_STR_LEN)) elt_sem_apo = db.Column(db.String(APO_CODE_STR_LEN))
# code element annee Apogee, eg VRT1A ou V2INLA,V2INCA # code element annee Apogee, eg VRT1A ou V2INLA,V2INCA
@ -176,7 +192,7 @@ class NotesFormsemestreCustomMenu(db.Model):
) )
title = db.Column(db.Text()) title = db.Column(db.Text())
url = db.Column(db.Text()) url = db.Column(db.Text())
idx = db.Column(db.Integer, default=0) # rang dans le menu idx = db.Column(db.Integer, default=0, server_default="0") # rang dans le menu
class NotesFormsemestreInscription(db.Model): class NotesFormsemestreInscription(db.Model):
@ -265,10 +281,16 @@ class NotesEvaluation(db.Model):
description = db.Column(db.Text) description = db.Column(db.Text)
note_max = db.Column(db.Float) note_max = db.Column(db.Float)
coefficient = db.Column(db.Float) coefficient = db.Column(db.Float)
visibulletin = db.Column(db.Boolean, nullable=False, default=True) visibulletin = db.Column(
publish_incomplete = db.Column(db.Boolean, nullable=False, default=False) db.Boolean, nullable=False, default=True, server_default="true"
)
publish_incomplete = db.Column(
db.Boolean, nullable=False, default=False, server_default="false"
)
# type d'evaluation: False normale, True rattrapage: # type d'evaluation: False normale, True rattrapage:
evaluation_type = db.Column(db.Boolean, nullable=False, default=False) evaluation_type = db.Column(
db.Boolean, nullable=False, default=False, server_default="false"
)
# ordre de presentation (par défaut, le plus petit numero # ordre de presentation (par défaut, le plus petit numero
# est la plus ancienne eval): # est la plus ancienne eval):
numero = db.Column(db.Integer) numero = db.Column(db.Integer)

View File

@ -26,8 +26,12 @@ class Partition(db.Model):
partition_name = db.Column(db.String(SHORT_STR_LEN)) partition_name = db.Column(db.String(SHORT_STR_LEN))
# numero = ordre de presentation) # numero = ordre de presentation)
numero = db.Column(db.Integer) numero = db.Column(db.Integer)
bul_show_rank = db.Column(db.Boolean(), nullable=False, default=False) bul_show_rank = db.Column(
show_in_lists = db.Column(db.Boolean(), nullable=False, default=True) db.Boolean(), nullable=False, default=False, server_default="false"
)
show_in_lists = db.Column(
db.Boolean(), nullable=False, default=True, server_default="true"
)
def __init__(self, **kwargs): def __init__(self, **kwargs):
super(Partition, self).__init__(**kwargs) super(Partition, self).__init__(**kwargs)

View File

@ -76,7 +76,7 @@ class ScolarFormsemestreValidation(db.Model):
# dans plusieurs semestres (cas R&T IUTV v2) # dans plusieurs semestres (cas R&T IUTV v2)
semestre_id = db.Column(db.Integer) semestre_id = db.Column(db.Integer)
# Si UE validée dans le cursus d'un autre etablissement # Si UE validée dans le cursus d'un autre etablissement
is_external = db.Column(db.Boolean, default=False) is_external = db.Column(db.Boolean, default=False, server_default="false")
class ScolarAutorisationInscription(db.Model): class ScolarAutorisationInscription(db.Model):