Services Api_Ihm Src Database Models
Version: 1.1.0 (2024-12-20) Auteur: Kahina et franck - Groupe 2 Commit: bigmoletos@yopmail.com
Modèles de données SQLAlchemy pour l’application de qualité de l’air.
Ce module définit les modèles de données pour la persistance des informations dans la base de données SQLite. Il gère : - Les utilisateurs et leur authentification - L’historique des simulations de qualité de l’air - Les relations entre utilisateurs et simulations
Architecture:
Gestion des utilisateurs: - Authentification sécurisée avec hachage des mots de passe - Support des rôles (admin/utilisateur) - Profils utilisateurs avec email unique
Historique des simulations: - Stockage des paramètres d’entrée - Enregistrement des résultats - Horodatage automatique - Liaison avec l’utilisateur
Relations et contraintes: - Clés étrangères pour l’intégrité référentielle - Contraintes d’unicité sur username/email - Cascade de suppression des simulations
Classes:
User: Modèle utilisateur avec authentification Simulation: Historique des prédictions
Dépendances:
flask_sqlalchemy : ORM SQL
flask_login : Gestion de l’authentification
werkzeug.security : Hachage des mots de passe
- class services.api_ihm.src.database.models.User(**kwargs)[source]
Bases :
UserMixin,ModelModèle utilisateur pour l’authentification et la gestion des droits.
Attributes:
- idint
Identifiant unique auto-incrémenté
- usernamestr
Nom d’utilisateur unique
- emailstr
Adresse email unique
- password_hashstr
Hash du mot de passe
- is_adminbool
Indique si l’utilisateur est administrateur
- simulationslist
Liste des simulations de l’utilisateur
- id
- username
- email
- password_hash
- is_admin
- simulations
- __init__(**kwargs)
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- query: t.ClassVar[Query]
A SQLAlchemy query for a model. Equivalent to
db.session.query(Model). Can be customized per-model by overridingquery_class.Avertissement
The query interface is considered legacy in SQLAlchemy. Prefer using
session.execute(select())instead.
- class services.api_ihm.src.database.models.Simulation(**kwargs)[source]
Bases :
ModelModèle pour l’historique des simulations de qualité de l’air.
Cette classe stocke les données et résultats des simulations avec: - Horodatage automatique - Stockage des paramètres d’entrée en JSON - Liaison avec l’utilisateur ayant effectué la simulation - Support des requêtes et filtres
Attributes:
- idint
Identifiant unique auto-incrémenté
- user_idint
ID de l’utilisateur (clé étrangère)
- datedatetime
Date et heure de la simulation (UTC)
- input_dataJSON
Paramètres d’entrée de la simulation Format: {
« TEMP »: float, « DEWP »: float, « PRES »: float, « cbwd »: str, …
}
- resultfloat
Résultat de la prédiction (PM2.5)
Methods:
- __repr__()
Représentation string de la simulation
Version: 1.0.0 (2024-03-19 15:35)
- id
- user_id
- date
- input_data
- result
- __init__(**kwargs)
A simple constructor that allows initialization from kwargs.
Sets attributes on the constructed instance using the names and values in
kwargs.Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.
- query: t.ClassVar[Query]
A SQLAlchemy query for a model. Equivalent to
db.session.query(Model). Can be customized per-model by overridingquery_class.Avertissement
The query interface is considered legacy in SQLAlchemy. Prefer using
session.execute(select())instead.
- services.api_ihm.src.database.models.add_is_admin_column()[source]
Ajoute la colonne is_admin à la table user si elle n’existe pas.
Cette fonction est utilisée pour la migration de la base de données. Elle vérifie d’abord si la colonne existe avant de l’ajouter pour éviter les erreurs.
Raises:
- SQLAlchemyError
En cas d’erreur lors de la modification de la table
Notes:
Utilise des requêtes SQL brutes via SQLAlchemy text()
La colonne est ajoutée avec une valeur par défaut False
La transaction est automatiquement rollback en cas d’erreur