45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
|
|
"""
|
||
|
|
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
|