76 lines
2.2 KiB
Python
76 lines
2.2 KiB
Python
|
# -*- coding: UTF-8 -*
|
||
|
|
||
|
"""Gestion des absences
|
||
|
"""
|
||
|
|
||
|
from app import db
|
||
|
from app.models import APO_CODE_STR_LEN
|
||
|
from app.models import SHORT_STR_LEN
|
||
|
from app.models import CODE_STR_LEN
|
||
|
|
||
|
|
||
|
class Absence(db.Model):
|
||
|
"""une absence (sur une demi-journée)"""
|
||
|
|
||
|
__tablename__ = "absences"
|
||
|
id = db.Column(db.Integer, primary_key=True)
|
||
|
etudid = db.Column(db.Integer, db.ForeignKey("identite.id"), index=True)
|
||
|
jour = db.Column(db.Date)
|
||
|
estabs = db.Column(db.Boolean())
|
||
|
estjust = db.Column(db.Boolean())
|
||
|
matin = db.Column(db.Boolean())
|
||
|
# motif de l'absence:
|
||
|
description = db.Column(db.Text())
|
||
|
entry_date = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
|
||
|
# moduleimpid concerne (optionnel):
|
||
|
moduleimpl_id = db.Column(
|
||
|
db.Integer,
|
||
|
db.ForeignKey("notes_moduleimpl.id"),
|
||
|
)
|
||
|
# XXX TODO: contrainte ajoutée: vérifier suppression du module
|
||
|
# (mettre à NULL sans supprimer)
|
||
|
|
||
|
|
||
|
class AbsenceNotification(db.Model):
|
||
|
"""Notification d'absence émise"""
|
||
|
|
||
|
__tablename__ = "absences_notifications"
|
||
|
|
||
|
id = db.Column(db.Integer, primary_key=True)
|
||
|
etudid = db.Column(
|
||
|
db.Integer,
|
||
|
db.ForeignKey("identite.id"),
|
||
|
)
|
||
|
notification_date = db.Column(
|
||
|
db.DateTime(timezone=True), server_default=db.func.now()
|
||
|
)
|
||
|
email = db.Column(db.Text())
|
||
|
nbabs = db.Column(db.Integer)
|
||
|
nbabsjust = db.Column(db.Integer)
|
||
|
formsemestre_id = db.Column(
|
||
|
db.Integer,
|
||
|
db.ForeignKey("notes_formsemestre.id"),
|
||
|
)
|
||
|
|
||
|
|
||
|
class BilletAbsence(db.Model):
|
||
|
"""Billet d'absence (signalement par l'étudiant)"""
|
||
|
|
||
|
__tablename__ = "billet_absence"
|
||
|
|
||
|
id = db.Column(db.Integer, primary_key=True)
|
||
|
etudid = db.Column(
|
||
|
db.Integer,
|
||
|
db.ForeignKey("identite.id"),
|
||
|
index=True,
|
||
|
)
|
||
|
abs_begin = db.Column(db.DateTime(timezone=True))
|
||
|
abs_end = db.Column(db.DateTime(timezone=True))
|
||
|
# raison de l'absence:
|
||
|
description = db.Column(db.Text())
|
||
|
# False: new, True: processed
|
||
|
etat = db.Column(db.Boolean(), 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)
|