""" 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"" # Note: Le client Pronote (pronote_client.py) reste un service externe # Pas besoin de modèle supplémentaire pour l'instant