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
cd /opt/scodoc
source venv/bin/activate
flask db init
flask db migrate -m "users and roles tables"
flask db upgrade
#flask db init
#flask db migrate -m "initial database"
#flask db upgrade
Puis initialisation de l'appli:

View File

@ -69,7 +69,7 @@ class BilletAbsence(db.Model):
# raison de l'absence:
description = db.Column(db.Text())
# 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())
# 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)
telephonemobile = 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)

View File

@ -18,14 +18,14 @@ class NotesFormation(db.Model):
acronyme = db.Column(db.String(SHORT_STR_LEN), nullable=False)
titre = 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(
db.String(SHORT_STR_LEN),
server_default=db.text("notes_newid_fcod()"),
nullable=False,
)
# 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))
@ -42,7 +42,7 @@ class NotesUE(db.Model):
titre = db.Column(db.Text())
# Type d'UE: 0 normal ("fondamentale"), 1 "sport", 2 "projet et stage (LP)",
# 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
# note: la fonction SQL notes_newid_ucod doit être créée à part
ue_code = db.Column(
@ -51,7 +51,7 @@ class NotesUE(db.Model):
nullable=False,
)
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:
code_apogee = db.Column(db.String(APO_CODE_STR_LEN))
# 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"))
matiere_id = db.Column(db.Integer, db.ForeignKey("notes_matieres.id"))
# 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
# id de l'element pedagogique Apogee correspondant:
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)
formsemestre_id = db.synonym("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())
date_debut = 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"))
# 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:
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):
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:
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:
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:
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:
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
elt_sem_apo = db.Column(db.String(APO_CODE_STR_LEN))
# code element annee Apogee, eg VRT1A ou V2INLA,V2INCA
@ -176,7 +192,7 @@ class NotesFormsemestreCustomMenu(db.Model):
)
title = 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):
@ -265,10 +281,16 @@ class NotesEvaluation(db.Model):
description = db.Column(db.Text)
note_max = db.Column(db.Float)
coefficient = db.Column(db.Float)
visibulletin = db.Column(db.Boolean, nullable=False, default=True)
publish_incomplete = db.Column(db.Boolean, nullable=False, default=False)
visibulletin = db.Column(
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:
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
# est la plus ancienne eval):
numero = db.Column(db.Integer)

View File

@ -26,8 +26,12 @@ class Partition(db.Model):
partition_name = db.Column(db.String(SHORT_STR_LEN))
# numero = ordre de presentation)
numero = db.Column(db.Integer)
bul_show_rank = db.Column(db.Boolean(), nullable=False, default=False)
show_in_lists = db.Column(db.Boolean(), nullable=False, default=True)
bul_show_rank = db.Column(
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):
super(Partition, self).__init__(**kwargs)

View File

@ -76,7 +76,7 @@ class ScolarFormsemestreValidation(db.Model):
# dans plusieurs semestres (cas R&T IUTV v2)
semestre_id = db.Column(db.Integer)
# 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):