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:

  1. Gestion des utilisateurs: - Authentification sécurisée avec hachage des mots de passe - Support des rôles (admin/utilisateur) - Profils utilisateurs avec email unique

  2. Historique des simulations: - Stockage des paramètres d’entrée - Enregistrement des résultats - Horodatage automatique - Liaison avec l’utilisateur

  3. 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, Model

Modè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
set_password(password)[source]
check_password(password)[source]
__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 overriding query_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 : Model

Modè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 overriding query_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