gmao/app_new/pronote/models.py

45 lines
1.6 KiB
Python
Raw Normal View History

2026-08-14 18:02:25 +02:00
"""
Modèle Pronote - GMAO Collège
Intégration avec Pronote
"""
from datetime import datetime, timezone
from app_new.extensions import db
class PronoteSession(db.Model):
"""Session de connexion Pronote."""
__tablename__ = "pronote_session"
__table_args__ = {'extend_existing': True}
id = db.Column(db.Integer, primary_key=True)
session_token = db.Column(db.Text, nullable=True)
device_uuid = db.Column(db.String(100), nullable=True)
account_pin = db.Column(db.String(10), nullable=True) # PIN du compte
session_url = db.Column(db.Text, nullable=True)
username = db.Column(db.String(100), nullable=True)
last_connection = db.Column(db.DateTime, nullable=True)
created_at = db.Column(db.DateTime, default=lambda: datetime.now(timezone.utc))
updated_at = db.Column(db.DateTime, default=lambda: datetime.now(timezone.utc), onupdate=lambda: datetime.now(timezone.utc))
@property
def is_active(self):
"""Une session est active si elle a un token."""
return self.session_token is not None
@staticmethod
def get():
"""Récupère la session active (la plus récente)."""
return PronoteSession.query.order_by(PronoteSession.id.desc()).first()
@staticmethod
def clear():
"""Supprime toutes les sessions."""
PronoteSession.query.delete()
db.session.commit()
def __repr__(self):
return f"<PronoteSession {self.id}>"
# Note: Le client Pronote (pronote_client.py) reste un service externe
# Pas besoin de modèle supplémentaire pour l'instant