forked from ScoDoc/ScoDoc
premier jet model assiduites
This commit is contained in:
parent
3bae99c5cd
commit
1c48758940
115
app/models/assiduites.py
Normal file
115
app/models/assiduites.py
Normal file
@ -0,0 +1,115 @@
|
||||
# -*- coding: UTF-8 -*
|
||||
"""Gestion de l'assiduité (assiduités + justificatifs)
|
||||
"""
|
||||
|
||||
from app import db
|
||||
from app.models import CODE_STR_LEN, SHORT_STR_LEN
|
||||
|
||||
|
||||
class Assiduite(db.Model):
|
||||
"""
|
||||
Représente une assiduité:
|
||||
- une plage horaire lié à un état et un étudiant
|
||||
- un module si spécifiée
|
||||
"""
|
||||
|
||||
__tablename__ = "assiduites"
|
||||
|
||||
assiduiteid = db.Column(db.Integer, primary_key=True)
|
||||
|
||||
date_debut = db.Column(
|
||||
db.DateTime(timezone=True), server_default=db.func.now(), nullable=False
|
||||
)
|
||||
date_fin = db.Column(
|
||||
db.DateTime(timezone=True), server_default=db.func.now(), nullable=False
|
||||
)
|
||||
|
||||
moduleimpl_id = db.Column(
|
||||
db.Integer,
|
||||
db.ForeignKey("notes_moduleimpl.id", ondelete="SET NULL"),
|
||||
)
|
||||
etudid = db.Column(
|
||||
db.Integer,
|
||||
db.ForeignKey("identite.id", ondelete="CASCADE"),
|
||||
index=True,
|
||||
nullable=False,
|
||||
)
|
||||
|
||||
etat = db.Column(db.String(CODE_STR_LEN), nullable=False)
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
data = {
|
||||
"assiduiteid": self.assiduiteid,
|
||||
"etudid": self.etudid,
|
||||
"moduleid": self.moduleimpl_id,
|
||||
"date_debut": self.date_debut,
|
||||
"date_fin": self.date_fin,
|
||||
"etat": self.etat,
|
||||
}
|
||||
return data
|
||||
|
||||
|
||||
class EtatJustificatif(db.Model):
|
||||
"""
|
||||
Représente les différents états de validation d'un justificatif:
|
||||
- un couple ID et description (32 caractères max)
|
||||
Par Défaut :
|
||||
0 -> Non validé
|
||||
1 -> Validé
|
||||
|
||||
Tout id différent de 1 sera considéré par ScoDoc comme "Non Justifié"
|
||||
mais cela permet d'avoir des états transitoires (Modifié, en attente, etc)
|
||||
"""
|
||||
|
||||
__tablename__ = "etat_justificatif"
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
description = db.Column(db.String(SHORT_STR_LEN), nullable=False)
|
||||
|
||||
|
||||
class Justificatif(db.Model):
|
||||
"""
|
||||
Représente un justificatif:
|
||||
- une plage horaire lié à un état et un étudiant
|
||||
- une raison si spécifiée
|
||||
- un fichier si spécifié
|
||||
"""
|
||||
|
||||
__tablename__ = "justificatifs"
|
||||
|
||||
justifid = db.Column(db.Integer, primary_key=True)
|
||||
|
||||
date_debut = db.Column(
|
||||
db.DateTime(timezone=True), server_default=db.func.now(), nullable=False
|
||||
)
|
||||
date_fin = db.Column(
|
||||
db.DateTime(timezone=True), server_default=db.func.now(), nullable=False
|
||||
)
|
||||
|
||||
etudid = db.Column(
|
||||
db.Integer,
|
||||
db.ForeignKey("identite.id", ondelete="CASCADE"),
|
||||
index=True,
|
||||
nullable=False,
|
||||
)
|
||||
etat = db.Column(
|
||||
db.Integer,
|
||||
db.ForeignKey("etat_justificatif.id", ondelete="SET NULL"),
|
||||
)
|
||||
|
||||
raison = db.Column(db.Text())
|
||||
fichier = db.Column(db.Integer())
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
data = {
|
||||
"justifid": self.assiduiteid,
|
||||
"etudid": self.etudid,
|
||||
"date_debut": self.date_debut,
|
||||
"date_fin": self.date_fin,
|
||||
"etat": self.etat,
|
||||
}
|
||||
if self.raison != None:
|
||||
data["raison"] = self.raison
|
||||
if self.fichier != None:
|
||||
data["fichier"] = self.fichier
|
||||
return data
|
Loading…
Reference in New Issue
Block a user