Éléments des contrôleurs de l’API

Fonctions du module contrôleurs

Module de gestion des requêtes SQL utilisées par l’API.

class QueryBuilder(from_relation, schema=None)

Bases : object

Classe permettant de construire des requêtes SQL complexes à l’aide de méthodes simples. L’intérêt principal est de pouvoir gérer automatiquement les alias des relations.

add_complex_filter(tables, values=None, expression=None)

exemple d’expression à remplir : “{0}.id = ${{}} or {1}.id = ${{}}”

add_complex_having(tables, values=None, expression=None)
add_filter(table, column, value, schema=None, operator='=', index=0, as_param=True)
add_groupby(table, column, schema=None, index=0)
add_join(table, schema=None, jointype='join', on='', index=0, use_join_alias=False)
add_orderby(table, column, schema=None, index=0)
add_select(expression=None, schema=None, table=None, column=None, index=0)
get_alias(table, index=0)

Récupère l’alias créé pour la table et l’index correspondant index > 0 si plusieurs références à la même table

property query
async add_to_data_history(region, schema, user, action, data_name, details='')

Adds action to data history table for current region.

Paramètres
  • region (string) – current region key

  • schema (string) – the schema in which to insert the event

  • user (object) – the user object

  • action (string) – the action performed

  • data_name (string) – the data name or a string representing the data

  • details (string, optional) – additionnal details, either pure string or formatted json, by default «  »

async chercher_fichier_des_communes(chemin, nom, l93=True)

Retourne le chemin absolu vers le fichier COMMUNES.shp au sein d’une arborescence dont la racine est à indiquer en paramètre

Paramètres

chemin (str) – Chemin d’accès au répertoire depuis lequel lancer la recherche

compute_formula(raw_formula)

Retourne la définition de l’indicateur (colonne data) décomposée dans un dictionnaire

Type renvoyé

dict

conversion_binaire_en_chaine(binaire)

Décode une chaîne de caractères en binaire.

Paramètres

chaine (chaîne de caractères en binaire) – chaîne de caractères décodée

Renvoie

Chaîne de caractères décodée et donc lisible

Type renvoyé

Chaîne de caractères

conversion_chaine_en_binaire(chaine)

convertit une chaine de caractères en binaire (un octet par lettre).

Paramètres

chaine (chaîne de caractères) – chaîne de caractères à convertir en binaire

Renvoie

Chaîne de caractères au format binaire : suite d’octets séparés à chaque fois par une espace

Type renvoyé

Chaîne de caractères

async copy_to_table(schema: str, table: str, source, columns: list[str] | None = None, is_national: bool = False, replace: bool = True, recreate_table_query: str | None = None) int

Copie des données tabulaires issues d’un fichier (.csv) dans une table.

La table doit exister.

Paramètres
  • schema (str) – Nom du schéma

  • table (str) – Nom de la table où vont être copiées les données

  • source (Path) – Nom du fichier CSV

  • columns (list) – Colonnes à préciser si en-tête à un ordre différent de l’ordre des colonnes

  • replace (boolean) – Efface les données de la table avant la copie. Si Faux, ajoute les données

Renvoie

Nombre de lignes insérées

Type renvoyé

int

async execute(*args)

Exécute une requete en utilisant le pool de connection.

Paramètres

args (list) – liste des arguments de la fonction asyncpg execute

Type renvoyé

None

async executemany(*args)

Exécute une requete en utilisant le pool de connection.

Paramètres

args (list) – liste des arguments de la fonction asyncpg execute

Type renvoyé

None

async fetch(*args)

Fonction permettant de récupérer les données en base en utilisant le pool de connection.

Paramètres

args (list) – liste des arguments de la fonction asyncpg fetch

Type renvoyé

une promesse de résultat

async get_categories_full_contents(region)

Récupère la liste des catégories pour une région donnée.

Paramètres

region (str) – Nom de la région sous la forme “nom-de-la-region”.

Renvoie

dict {name: [all data]}

Type renvoyé

dict

async get_common_dataset_table(global_region, table_name)

Retrieve the content from a table of common data set.

Paramètres
  • global_region (str) – Global region key used to load data from.

  • table_name (str) – The table name that we wish to retrieve

Renvoie

  • pd.DataFrame – the dataframe of all existing rows (if the table exists)

  • boolean – False if the table is not found in common PostgreSQL schema

async get_data_table(region, table_name)

Get the full content of a table.

Paramètres
  • region (str) – Name of the region written in the form “name-of-the-region”.

  • table_name (str) – Table name in the region

Renvoie

[list of rows]

Type renvoyé

dict

async get_data_tables_headers(region, list_tables)

Get the first 5 rows of each data table for a given region.

Paramètres

region (str) – Name of the region written in the form “name-of-the-region”.

Renvoie

dict {nom: [list modalite ids]}

Type renvoyé

dict

async get_last_update_date(region, list_tables)

Get update date of each data table for a given region.

Paramètres
  • region (str) –

  • list_tables (list) –

Type renvoyé

dict

get_pg_engine()

Return the sqlAlchemy engine to access the postgresql database

async get_update_date(region, list_tables)

Get update date of each data table for a given region.

Paramètres
  • region (str) –

  • list_tables (list) –

Type renvoyé

dict

async list_categories(region)

Récupère la liste des catégories pour une région donnée.

Paramètres

region (str) – Nom de la région sous la forme “nom-de-la-region”.

Renvoie

dict {nom: [list modalite ids]}

Type renvoyé

dict

async list_categories_modalites(region)

Récupère la liste des catégories et des modalites pour une région donnée.

Paramètres

region (str) – Nom de la région sous la forme “nom-de-la-region”.

Renvoie

dict {nom: [list categories modalites ids]}

Type renvoyé

dict

async list_tables(region)

Récupère la liste des tables de données (indicateurs) pour une région donnée.

Paramètres

region (str) – Nom de la région sous la forme “nom-de-la-region”.

Renvoie

dict {nom: [list modalite ids]}

Type renvoyé

dict

async liste_tables_jdd_communs(region)

Récupère la liste des tables de données (indicateurs) pour une région donnée.

Paramètres

region (str) – Nom de la région sous la forme “nom-de-la-region”.

Renvoie

dict {nom: [list modalite ids]}

Type renvoyé

dict

async move_table_from_france_to_region(region, table, maj)

Copies a data table from the “france” schema to the regional schema. Keeps only the communes of the specified region.

A commune belongs to a region if the first two characters of its code correspond to a department code in <region>.departement. With this definition, even the communes of the region that do not exist in the current perimeter (in <region>.commune) are kept.

If the table contains a “commune_dest” column (flow data), the filtering is also done on this second column.

Paramètres
  • region (str) – normalized region name (ex : auvergne-rhone-alpes, occitanie)

  • table (str) – table name

  • maj (any) – Truthy if updating an existing table, falsy if importing a new table

async table_datatypes(schema, table)

Récupère les noms et types des champs d’une table donnée.

Si le résultat renvoie un dictionnaire vide, la table n’existe sans doute pas (ou inaccessible en lecture par le pguser).

Paramètres
  • schema (str) –

  • table (str) –

Renvoie

nom du champs: type

Type renvoyé

dict

Submodules du module contrôleurs

actions module (controller)

analyse module

territorial synthesis module (controller)

Fonctions et requêtes SQL pour les notes et analyses territorialsynthesis

async get_territorialsynthesis_notes(schema: str, zone: str, zone_id: str, code: bool = False)

Récupération des notes d’un territoire et des statistiques sur tous les indicateurs territorialsynthesis

Paramètres
  • schema (str) – région (schéma en base)

  • zone (str) – type de territoire (scot, pnr…)

  • zone_id (str|int) – identifiant de territoire (peut être soit int soit str suivant le code utilisé)

  • code (bool) – si code = True alors on fait la requête via le code territoire (insee) à la place de son identifiant

Renvoie

list[Dict] – identifiant de l’analyse numero de l’analyse thème de l’analyse valeur du territoire unité de l’indicateur note du territoire note de la médiane sur tous les territoires du même type valeur médiane valeur min valeur max

Type renvoyé

liste des indicateurs avec

async update_territorialsynthesis_notes(region, notes)

Insertion des notes CESBA pour les couples types territoire / analyse

async update_territorialsynthesis_stats(region, terr, aid, vmin, vmax, medi, median_note)

Insertion des données de statisiques des indicateurs territorialsynthesis sur un type de territoire donné et une analyse donnée

donnees_pour_representation module

gestion_images module

class SuppressionElement(path_folder)

Bases : object

Classe pour supprimer un ou plusieurs éléments d’un dossier.

Paramètres

path_folder (le chemin du dossier) –

class SuppressionUniqueFichierDossier(path_folder)

Bases : SuppressionElement

Classe pour supprimer un élément d’un dossier.

Paramètres

path_folder (le chemin du dossier) –

supprimer_unique_fichier_dossier(path_file)

Fonction qui supprime un élément précis d’un dossier

ecriture_image_base64(image, output_path)

Fonction qui écrit des images en base 64 sur le serveur.

Paramètres
  • image (image en base64) –

  • output_path (le chemin de sortie) –

list_path_file(path_folder, extension_file)

Fonction qui renvoie une liste de path file.

Paramètres
  • path_folder (le chemin du dossier) –

  • extension_image (l'extension du type d'image qu'on recherche) –

Type renvoyé

list

indicateur_tableau_bord module

mesure_audience module

class MesureDAudience(region: str)

Bases : object

Obtention et insersion en base des données de navigation des utilisateur.rices.

Paramètres
  • region (str) – Nom de la région sans majuscule ni accent (ex : auvergne-rhone-alpes)

  • ip (str) – Adresse ip du client

async commune()

Retourne le nom de la commune depuis laquelle l’utilisateur.trice utilise TerriSTORY

async inserer_donnees_localisation(is_excluded: bool = False)

Insère les données de localisation de l’utilisateur.rice

property date
property ip_anonymisee
property nom_schema
class MesureDAudienceActions(region, code_territoire, type_territoire, liste_actions, liste_trajectoires_cibles, type_action)

Bases : MesureDAudienceTerritoriale

Insère les données de navigation dans la table propre à la consultation des actions et trajectoires cibles

Paramètres
  • liste_actions (liste) – liste des actions cochées

  • liste_trajectoires_cibles (liste) – liste des trajectoires cibles modifiées par l’utilisateur.rice

  • type_action (str) – Précision quant à la manière dont les calculs sont lancés : lancement de calculs ou export ADEME ?

async inserer_donnees_consultations(id_utilisateur)

Insère les données de navigation propres aux actions et trajectoires cibles

class MesureDAudienceAnalysesTerritoriales(region, code_territoire, type_territoire, page)

Bases : MesureDAudienceTerritoriale

Insère les données de navigation propres aux pages d’analyses territoriales

Paramètres

page (str) – Page consultée (suivi des indicateurs territoriaux ou analyses territoriales)

async inserer_donnees_consultations(id_utilisateur)

Insère les données de navigation propres aux analyses territoriales

class MesureDAudienceAutresPages(region, page, details='')

Bases : MesureDAudience

Insère les données de navigation propres aux autres pages qui ne sont pas déjà gérées par d’autres classes (A propos, contact, etc.).

Paramètres
  • region (str) – Région sélectionnée

  • page (str) – Page consultée

  • details (str (default='')) – Détails sur la page consultée

async inserer_donnees_consultations(id_utilisateur)

Insère les données de navigation propres aux analyses territoriales

Paramètres

id_utilisateur (int) – Le token de l’utilisateur qui visite

class MesureDAudienceIndicateurs(provenance: str, region: str, code_territoire: str, type_territoire: str, id_indicateur)

Bases : MesureDAudienceTerritoriale

Insère les données de navigation dans la table propre à la consultation des indicateurs

Paramètres
  • provenance (str) – Page depuis laquelle l’indicateur est consulté (depuis l’inteface carto ou la page de création des tableau de bord)

  • id_indicateur (int) – Identifiant unique de l’indicateur consulté

async inserer_donnees_consultations(id_utilisateur)

Insère les données de navigation propres aux indicateurs

class MesureDAudiencePoi(region: str, code_territoire: str, type_territoire: str, nom_couche: str, cochee: str)

Bases : MesureDAudienceTerritoriale

Insère les données de consultation des couches POI

Paramètres
  • nom_couche (str) – Nom de la couche POI. Est préféré à l’ID pour ne pas être dépendant de l’état de la BDD à un instant donné

  • cochee (booléen) – Renvoie True si la couche a été activée et False si elle a été désactivée

async inserer_donnees_consultations(id_utilisateur)

Insère les données de navigation propres aux couches d’entités ponctuelles

class MesureDAudienceTableauxBords(region, code_territoire, type_territoire, tableau_bord_id, tableau_bord_nom)

Bases : MesureDAudienceTerritoriale

Insère les données de consultation des tableaux de bords

Paramètres
  • tableau_bord_id (id) – ID du tableau de bord visionné

  • tableau_bord_nom (str) – Nom du tableau de bord

async inserer_donnees_consultations(id_utilisateur)

Insère les données de navigation propres aux couches d’entités ponctuelles

class MesureDAudienceTerritoriale(region: str, code_territoire: str, type_territoire: str, donnees_ip: str | None = '')

Bases : MesureDAudience

Classe intermédiaire pour l’ensemble des mesures d’audience qui s’appuient sur des territoires et nécessitent donc de spécifier le type et le code de territoire lors de la consultation.

Paramètres
  • code_territoire (str) – Code du territoire sélectionné

  • type_territoire (str) – Type de territoire sélectionné

  • donnees_ip (str) – Données sur l’IP (géolocalisation approximative)

pcaet_ademe module

perimeters module

command_exists(name)
async convert_archive_to_folder(input_path, output_path)

Télécharge les données communales admin express de l’IGN

Paramètres
  • annee (entier) – Année dont datent les données à télécharger

  • input_path (chaîne de caractères) – Chemin d’accès au répertoire où déposer ces données

async integrate_ign_data(year)

Intègre la table des communes dans le schéma régional à partir des données IGN téléchargée automatiquement

Paramètres

schema (str) – Nom du schéma régional

async liste_donnees_perimetres(region)

poi module

Gestion des couches de Point d’Intérêt aka POI

  • Installation méthanisation

  • Installation réseaux de chaleur

  • bornes d’infra de recherche de véhicules électriques (IRVE)

async create_poi(region, user, layer, properties, geom)

Création d’une POI dans une couche donnée

Paramètres
  • region (str) – region key

  • user (terriapi.controller.user.User) – Utilisateur

  • layer (str) – Nom de la couche POI (i.e. nom de la table)

  • properties (dict) – Données attributaires (JSON)

  • geom (tuple) – Coordonnées x (lon), y (lat)

async create_poi_contribution(region, user, layer, properties, geom)

Création d’une POI dans une couche donnée

Paramètres
  • region (str) – region key

  • user (terriapi.controller.user.User) – Utilisateur

  • layer (str) – Nom de la couche POI (i.e. nom de la table)

  • properties (dict) – Données attributaires (JSON)

  • geom (tuple) – Coordonnées x (lon), y (lat)

async delete_poi_layer(schema, layer, table_name)

Delete a POI layer.

Paramètres
  • region (str) – region key

  • layer (int) – poi layer key inside regional poi layer table

  • table_name (str) – poi layer table name

async delete_poi_object(region, user, layer, id)

Suppression d’une POI dans une couche donnée

Paramètres
  • region (str) – region key

  • user (terriapi.controller.user.User) – Utilisateur

  • layer (str) – Nom de la couche POI (i.e. nom de la table)

  • id (integer) – ID de l’objet à supprimer

async delete_poi_object_contribution(region, user, layer, record_id)

Suppression d’une POI dans une couche donnée

Paramètres
  • region (str) – region key

  • user (terriapi.controller.user.User) – Utilisateur

  • layer (str) – Nom de la couche POI (i.e. nom de la table)

  • id (integer) – ID de l’objet à supprimer

async get_layers_constraints(region: str, layers: str | list)

Get POI themes for a region.

Paramètres

region (str) – Region name

async get_poi_contribution(region, edit_id)

Retrieve a specific contribution for current region

Paramètres
  • region (str) – region key

  • edit_id (int) – contribution ID

async get_poi_contributions(region, layers: str | list = '*', edit_id=None)

Retrieve contributions list for current region

Paramètres

region (str) – region key

async get_themes(region: str)

Get POI themes for a region.

Paramètres

region (str) – Region name

async historique_poi(region)

Récupère et traite l’historique des modifications des couches POI

Paramètres

region (str) – region key

linear_dict(dic)

Flattens a dict to a list of strings.

async obtenir_installation_et_geom(schema, liste_tables, main_schema='', zone=None, zone_id=None)

Permet d’obtenir la liste des propriétés et des geométries des équipement

Paramètres
  • schema (chaîne de caractères) – schéma régional consacré aux équipements

  • liste_tables (liste) – liste de couches qui contiennent des données équipements

  • main_schema (chaîne de caractères) – shéma régional

  • zone (chaîne de caractères) – type de zone dans laquelle récupérer les équipements

  • zone_id (chaîne de caractères) – id de la zone. Si aucune zone n’est spécifiée, tous les équipements de la région sont retournés

Type renvoyé

Dictionnaire contenant les géométries et les propriétés des couches

async obtenir_tables_equipements_autres_que_points(schema)

Obtention des nom des tables qui contiennent des données d’équipements dont la géométrie n’est pas le point

Paramètres

schema (Chaîne de caractères) – Nom du schéma régional

Type renvoyé

Liste des tables qui contiennent les données des équipements représentés par d’autres géométries que le point.

async rename_theme(old_name, new_name, region)

Rename indicators” theme.

Paramètres
  • old_name (str) – Old theme name

  • new_name (str) – New theme name

  • region (str) – Region name

async update_contribution(region, edit_id, action)

Update a contribution status inside meta table

Paramètres

region (str) – region key

async update_order_within_themes(data, region)

Update layers” order within their theme.

Paramètres

data (json) – {themes : {id_analyse: ordre} … }

async update_poi(region, user, layer, record_id, properties, geom)

UPDATE a POI object in a layer

Paramètres
  • region (str) – region key

  • user (terriapi.controller.user.User) – Utilisateur

  • layer (str) – Nom de la couche POI (i.e. nom de la table)

  • record_id (int) – Identifiant de l’élément à modifier

  • properties (dict) – Données attributaires (JSON)

  • geom (tuple) – Coordonnées x (lon), y (lat)

async update_poi_contribution(region, user, layer, record_id, properties, geom)

Mise à jour d’un objet dans une couche POI

Paramètres
  • region (str) – region key

  • user (terriapi.controller.user.User) – Utilisateur

  • layer (str) – Nom de la couche POI (i.e. nom de la table)

  • record_id (int) – Identifiant de l’élément à modifier

  • properties (dict) – Données attributaires (JSON)

  • geom (tuple) – Coordonnées x (lon), y (lat)

async update_poi_edition_rights(region, layer, droit, user)

Mise à jour des droits (modifiable) pour une couche POI

Paramètres
  • region (str) – region key

  • layer (str) – Nom de la couche POI (i.e. nom de la table)

  • droit (boolean) – Modifiable ou non

async update_theme_order(data, region: str)

Update themes order inside a region.

Paramètres

data (json) – {themes : {id_analyse: ordre} … }

async validate_contribution(constraints: list, properties: dict)

Get POI themes for a region.

Paramètres

region (str) – Region name

pop_up_accueil module

Fonction qui trie les images à défiler dans le carousel dans l’ordre et par groupe d’images.

Paramètres
  • region (la région à mettre à jour) –

  • str

  • path (le chemin vers le dossier) –

  • str

  • all_images (la liste des noms d'images) –

  • list

Type renvoyé

list

suppression_images_region_pop_up_accueil(region, path_folder)

Fonction qui supprime les images qu’une région avait choisi pour son carousel.

Paramètres
  • region (la région à mettre à jour) –

  • str

  • path (le chemin vers le dossier) –

  • str

async update_actu_pop_up(region, texte_markdown)

Fonction qui met à jour le contenu de la fenêtre d’actu.

Paramètres
  • region (la région à mettre à jour) –

  • texte_markdown (le texte en langage markdown) –

regions_configuration module

Fonctions et requêtes SQL sur la gestion des configurations des régions

async check_is_valid_region(schema_name)
async get_configuration(id=None, with_private=False)

Return main regions configuration from database.

async get_data_units(region)

Returns the list of units available in current region.

async get_impacts_configurations(region)

Returns the regional strategy impacts configuration from the database.

async get_non_national_regions(env)
async get_poi_contributions_managers(region, layer)

Returns the list of users who are supposed to manage POIs contributions.

async get_sankeys_configuration(id=None)
async get_seo_configuration(region)

Returns the regional SEO configuration from the database.

async is_national_feature_enabled()

Check if the national feature is enabled.

async update_configuration(region, key, value)

saisie_objectifs module

async ajout_objectif(region: str, donnees: dict, supra_goal_id: int | None = None)

Ajoute un objectif en base de données

Paramètres
  • region (str) – nom normalisé de la région (ex : auvergne-rhone-alpes, occitanie)

  • donnees (liste) – Liste de dictionnaires qui comportent chacun toutes les données de l’objectif à intégrer en base de données exemple : {“obj”: [{“annee”: 2020, “valeur”: 20}, {“annee”: 2050, “valeur”: 70}], “params”: {“graphiques”: « Production d’énergie », “annee”: 2018, “titre”: “EnR”}}

async allow_supra_goal_display_for_territory(region: str, supra_goal_id: int, type_territoire: str, code_territoire: str, nom_territoire: str, tout_type_territoire: bool)

Autorise l’affichage de l’objectif en mode valeur pour une échelle géographique / territoire spécifique à indiquer en paramètre

Paramètres
  • region (str) – nom normalisé de la région (ex : auvergne-rhone-alpes, occitanie)

  • type_territoire (str) – Type de territoire sélectionné par l’utilisateur

  • code_territoire (str) – code du territoire sélectionné par un utilisateur (si on autorise pour un type de territoire, le code du territoire est vide)

  • nom_territoire (str) – Nom du territoire sélectionné par un utilisateur (si on autorise pour un type de territoire, le nom du territoire est vide)

  • tout_type_territoire (Booléen) – Indique si on désactive l’affichage pour un type de territoire ou pour un territoire spécifique

async check_goal_exists(region: str, supra_goal_id: int) bool
async liste_affectation_maille_affichage_objectifs_valeur(region: str, supra_goal_id: int)

Retourne la liste des territoires / types de territoires pour lesquels on autorise l’affichage d’un objectif en mode valeur

Paramètres
  • region (str) – nom normalisé de la région (ex : auvergne-rhone-alpes, occitanie)

  • titre (str) – Titre du graphique pour lequel on liste les territoires / types territoires concernés par l’autorisation

  • graphique – Nom de la table à partir de laquelle on obtient les données de références la trajectoire qui définit l’objectif

Type renvoyé

Dictionnaire dont une clé est associée à la liste des affectations et une autre qui correspond au statut.

async suppression_affectation_maille_affichage_objectifs_valeur(region: str, supra_goal_id: int, type_territoire: str, code_territoire: str, nom_territoire: str, tout_type_territoire: bool)

Désactive l’affichage de l’objectif en mode valeur pour les échelles géographiques / territoire spécifique à indiquer en paramètre

Paramètres
  • region (str) – nom normalisé de la région (ex : auvergne-rhone-alpes, occitanie)

  • type_territoire (str) – Type de territoire sélectionné par l’utilisateur

  • code_territoire (str) – code du territoire sélectionné par un utilisateur (si on autorise pour un type de territoire, le code du territoire est vide)

  • nom_territoire (str) – Nom du territoire sélectionné par un utilisateur (si on autorise pour un type de territoire, le nom du territoire est vide)

  • tout_type_territoire (Booléen) – Indique si on désactive l’affichage pour un type de territoire ou pour un territoire spécifique

async supprimer_objectif(region: str, supra_goal_id: int)

Supprime en base de données un objectif

Paramètres
  • region (str) – nom normalisé de la région (ex : auvergne-rhone-alpes, occitanie)

  • titre (str) – Titre de l’objectif à supprimer

  • graphique (str) – Nom du graphique auquel s’appliquait l’objectif à supprimer

scenario module

Fonctions et requêtes SQL sur la gestion des scénarios utilisateur·rice·s

async change_public_state_scenario(region, scenario_id, publique)

Change l’état de publication d’un scénario.

Paramètres
  • scenario_id (int) – L’identifiant du scénario.

  • publique (boolean) – État actuel de la publication

async create_scenario(titre, mail, description, zone_type, zone_id, nom_territoire, region, is_national, actions, params, advanced_params, trajectoires_cibles)

Créer un scénario pour un·e utilisateur·rice spécifique.

Paramètres
  • titre (str) – Titre du scénario.

  • mail (str) – Login du compte qui crée le scénario.

  • description (str) – Description du scénario. Peut être None.

  • zone_type (str) – Type de la zone courante

  • zone_id (int) – Id de la zone courante

  • nom_territoire (str) – Nom du territoire

  • region (str) – Nom standardisé de la région

  • actions (list) – Liste de str du numéro des actions activées (i.e. cochées)

  • params (dict) – Clé/valeur de tous les paramètres action_params à enregistrer. Clé : id de l’action param.

  • advanced_params (dict) – Clé/valeur de tous les paramètres avancés pour chaque catégorie d’actions

  • trajectoires_cibles (dict[dict]) – Clé/valeur des 3 trajectoires cibles “energie_produite”, “emission_ges”, “energie_economisee”

Renvoie

L’ID du scénario.

Type renvoyé

int

async delete_scenario(region, scenario_id)

Supprime un scénario.

Paramètres

scenario_id (int) – L’identifiant du scénario.

async disable_scenario(region, user, scenario_id)

Désactiver le partage d’un scénario (par un bénéficiaire)

Paramètres
  • user (str) – L’identifiant du user qui désactive

  • scenario_id (int) – L’identifiant du scénario.

async get_scenario(scenario_id)

Récupère les paramètres pour un scénario donné.

Paramètres
  • scenario_id (int) – L’identifiant du scénario.

  • partage (list) – Liste de mails des identifiants bénéficiaires.

  • partage_par (str) – Identifiant du compte qui partage ce scénario.

Renvoie

Avec le titre, la description, la date et une clé « params » avec toutes les valeurs des paramètres.

Type renvoyé

dict

async region_scenarios(region)

Get all the scenarios for a given region

Paramètres

region (str) – Normalized region name.

Renvoie

List of the scenarios for the region

Type renvoyé

list

async share_scenario(region, scenario_id, emails)

Partager un scénario avec d’autres utilisateurs

Paramètres
  • scenario_id (int) – L’identifiant du scénario.

  • emails (list) – La liste des emails.

async update_scenario(scenario_id, titre, description, actions, params, advanced_params, trajectoires_cibles)

Récupère les paramètres pour un scénarion donné.

Paramètres
  • scenario_id (int) – L’identifiant du scénario.

  • titre (str) – Titre du scénario.

  • description (str) – Description du scénario. Peut être None.

  • params (list) – Liste de dict avec tous les paramètres action_params à enregistrer.

  • advanced_params (dict) – Clé/valeur de tous les paramètres avancés pour chaque catégorie d’actions

  • trajectoires_cibles (list[dict]) – Clé/valeur des 3 trajectoires cibles “energie_produite”, “emission_ges”, “energie_economisee”

Renvoie

Avec le titre, la description, la date et une clé « params » avec toutes les valeurs des paramètres.

Type renvoyé

dict

async user_scenario(region, login)

Récupère tous les scénarii d’un·e utilisateur·rice.

Paramètres

login (str) – L’identifiant du compte (i.e. mail).

Renvoie

Liste de scénarii dont toutes les valeurs sont dans un dict.

Type renvoyé

list

async verifie_scenario(scenario_id)

On vérifie l’existence et le droit de lecture pour une stratégie donnée

Paramètres

scenario_id (int) – L’identifiant du scénario

Type renvoyé

dict

stations_mesures module

Fonctions et requêtes SQL sur les stations de mesures des indicateurs climat

async get_stations_mesures(region, jeu_de_donnees)

Selection des données des stations de mesure qui ont des données pour l’indicateur selectionné

Paramètres
  • region (str) – Nom de la région (schéma en base)

  • jeu_de_donnees (str) – Nom de l’indicateur climat

async get_value_par_station(region, jeu_de_donnees, stations_mesures, min_year, max_year)

Selection des données des stations de mesure par station : Cette fonction permet de parcourir la liste des stations qui ont des données pour l’indicateur selectionné et récupérer tous les valeurs et libelle_mois pour chaque station depuis l’année minimal jusqu’à la date maximale de disponibilité de données

Paramètres
  • region (str) – Nom de la région (schéma en base)

  • jeu_de_donnees (str) – Nom de l’indicateur climat

strategy_export module

append_regional_info(data, level)
export_excel_results(region, parameters, results, trajectories, output_filepath, metadata)

Generate an Excel file with input parameters, trajectories and results.

This function requires the presence of an Excel file located in ressources/export-impacts-strategie-territoriale-<region>.xlsx

This excel file can be filled with various parameters that will be replaced with corresponding values, either from input parameters, reference trajectories or results.

Existing tokens that can be replaced are currently the following:

  • General information:

    • <Nom_Territoire>

    • <Nom_Strategie>

    • <Date_Export>

    • <Mail_Contact>

    • <Source_Donnees>

  • Input parameters:

    • <Input_Parameters>

    • <Input_AdvancedParameters>

  • Results:

    • <Impacts_GES_par_energie> and <Impacts_GES_par_secteur>

    • <Impacts_ConsoNRG_par_energie> and <Impacts_ConsoNRG_par_secteur>

    • <Impacts_Pollutant_par_energie> and <Impacts_Pollutant_par_secteur> where Pollutant is any of following list:

      • COVNM

      • NH3

      • NOX

      • PM10

      • PM25

      • SOX

    • <Impacts_ProdENR_par_energie>

    • <Impacts_Nb_Emplois_Region>

    • <Impacts_VA_Region>

    • <Impacts_Nb_Emplois_Territoire>

    • <Impacts_VA_Territoire>

    • <Impacts_Inv>

    • <Impacts_Retomb_fisc>

    • <Impacts_Baisse_facture>

  • Trajectories

    • <Trajectoire_GES_Off_PCAET>

    • <Trajectoire_ConsoNRG_Off_PCAET>

    • <Trajectoire_ProdENR_Off_PCAET>

    • <Trajectoire_Pollutant_Cible> where Pollutant is any of following list:

      • COVNM

      • NH3

      • NOX

      • PM10

      • PM25

      • SOX

    • <Trajectoire_GES_Cible>

    • <Trajectoire_ConsoNRG_Cible>

    • <Trajectoire_ProdENR_Cible>

    • <Trajectoire_GES_Off>: this parameter requires a variable name corresponding

      to the trajectory that must be specified after a # sign. For example, by writing <Trajectoire_GES_Off>#SRADDET in a cell, the corresponding values of the trajectory which name contains SRADDET will be used (if it exists). Same applies to the two following tokens.

    • <Trajectoire_ConsoNRG_Off>: same than <Trajectoire_GES_Off>

    • <Trajectoire_ProdENR_Off>: same than <Trajectoire_GES_Off>

Paramètres
  • impact_energie (dict) – dictionnaire des impacts ges, énergie, production EnR

  • polluants (dict) – dictionnaire des données de polluants atmosphériques

  • output_filepath (str) –

flatten_dict(nested_dict, ignore_keys=())

Flattens a dictionary recursively. Ignores key if specified.

Paramètres
  • nested_dict (dict) – the dictionary to flatten

  • ignore_keys (tuple, optional) – the keys to ignore, by default ()

Renvoie

the dictionary flattened with nested keys in tuple key

Type renvoyé

dict

nested_dict_to_df(values_dict, ignore_keys=())

Converts a nest dictionary to a flattened dataframe with nested keys as tuples.

E.g., from:

{
    "2019": {
        "direct": {
            "region": {
                "potentiel": {
                    "nb_emploi_total": 10.0,
                    "va_totale": 10.0,
                }
            }
        }
    },
    ...
}

to:

pandas.DataFrame

year

direct

level

type

nb_emploi_total

va_totale

2019

direct

region

perenne

0.0

10.5

2019

direct

region

ponctuel

2.4

16.25

Paramètres
  • values_dict (dict) – the nested dictionary to convert

  • ignore_keys (tuple, optional) – keys that should be ignored when flattening to remove elements, by default ()

Renvoie

the dataframe resulting from the operation

Type renvoyé

pd.DataFrame

prepare_data_for_jobs(data)

Prepare the results data for pdf export by flattening the nested input dictionary and going from:

{
    "2019": {
        "direct": {
            "region": {
                "potentiel": {
                    "nb_emploi_total": 10.0,
                    "va_totale": 10.0,
                }
            }
        }
    },
    ...
}

to a tuple of two dictionaries looking like:

{
    "2019": {
        "total": 0.0,
        "direct": 0.0,
        "indirect": 0.0
    },
    ...
}
Paramètres

data (dict) – the input data concerning jobs

Renvoie

two dictionaries corresponding to jobs and added value data

Type renvoyé

tuple

put_data_in_excel_sheet_at_cell(sheet, cell, data, prepend_name=True, remove_tags=True, empty_value=' ')

Put data inside an excel sheet at the spot given by the cell coordinates Doesn’t do anything to the formatting.

Paramètres
  • sheet (openpyxl worksheet) – the sheet to edit (edited inplace)

  • cell (tuple) – the coordinates (row, column) in integers, (1,1) corresponding to the top left corner of the worksheet.

  • data (pd.DataFrame or list or dict) –

    the list of data to insert. It must be structured as follows:

    [
        {
            'nom': 'Sector name', 'couleur': '#1fa22E',
            'confidentiel': 'non',
            'data': [
                {'annee': 1990, 'valeur': 9022.62},
                {'annee': 2000, 'valeur': 9424.92},
                ...
            ]
        },
        {
            'nom': 'Other sector', 'couleur': '#933588',
            'confidentiel': 'non',
            'data': [
                {'annee': 1990, 'valeur': 3792.3},
                {'annee': 2000, 'valeur': 4107.48},
                ...
            ]
        }
    ]
    

    or:

    {
        "2019": nested_value,
        ...
    }
    

    with nested_value either directly a value (float, etc.) or a dictionary containing multiple values that will be spreaded on different rows in the final document.

replace_value_in_sheet(sheet, tokens, search=[])

Replace the values of tokens keys by tokens values in sheet

Paramètres
  • sheet (openpyxl sheet) – the worksheet opened through openpyxl

  • tokens (dict) – the keys to replace by the values

async update_strategy_export_template_file(region, env)

suivi_trajectoire module

Module pour les fonctions et requêtes SQL de la page suivi de trajectoire

i.e. historique de certaines analyses comme la consommation énergétique, la production d’énergie renouvelable (aka prod enr)

async categories_metadata(region, categorie)

Retourne les couleurs associées à chaque type d’une table des catégories

Paramètres
  • region (str) – Nom de la région (nom officiel complet en minuscule, sans accent, e.g. auvergne-rhone-alpes)

  • categorie (str) – Nom d’une table des catégories (table en base)

Type renvoyé

dict

async check_year_in_mobility_table(region, zone, zone_id, year, buffer=0)
async distance_moyenne_par_actif_en_voiture(region, zone, zone_id, year=None, buffer=0)

Renvoie la distance moyenne parcouru par les actifs en voiture dans le cadre de leur trajet domicile-travail.

Paramètres
  • region (str) – Nom de la région (schéma en base)

  • zone (str) – Zone géographique sélectionnée

  • zone_id (str) – Identifiant de la zone géographique

  • buffer (int) – Détermine le nombre d’actif dans un rayon donnée en km

Type renvoyé

float

fusion_historique_et_future(history, future, metadata, by_column, final_year, soustraire=True)

Fusionne les séries temporelles historiques avec la réduction future.

On extrapole à droite la séries temporelles issues des données historiques jusqu’à l’année max fournie dans future. On déduit ces valeurs avec les valeurs calculées de réduction de conso d’énergie (resp. émission GES).

Paramètres
  • history (pd.DataFrame) –

  • future (pd.DataFrame) – Résultats issus des actions (index : modalité, columns : annee)

Type renvoyé

pd.DataFrame

fusion_historique_et_future_prod(history, future, metadata_prod, metadata_vector, by_column_prod, by_column_vector, final_year, soustraire=True)

Fusionne les séries temporelles historiques avec la réduction future.

On extrapole à droite la séries temporelles issues des données historiques jusqu’à l’année max fournie dans future. On déduit ces valeurs avec les valeurs calculées de réduction de conso d’énergie (resp. émission GES).

Paramètres
  • history (pd.DataFrame) –

  • future (pd.DataFrame) – Résultats issus des actions (index : modalité, columns : annee)

Type renvoyé

pd.DataFrame

async get_data_trajectory_with_categories(region, jeu_de_donnees, type_territoire, code_territoire, categorie)

Retourne les données historiques d’une analyse par catégorie.

Paramètres
  • region (str) – Nom de la région (schéma en base)

  • analyse (str) – Nom de la table

  • zone (str) – Zone géographique sélectionnée

  • zone_id (str) – Identifiant de la zone géographique

  • categorie (str) – Catégorie de l’analyse, e.g. secteur, energie, etc.

Type renvoyé

dict

async get_page_parameters(region, env, page)

Get the page graph types enabled.

Paramètres
  • region (str) – Region name (e.g., auvergne-rhone-alpes)

  • env (str) – Environment considered (e.g., dev)

  • page (str) – Page name (e.g., suivi_energetique)

Renvoie

for each graph type, a boolean indicating whether the graph is enabled.

Type renvoyé

dict

async get_pages_enabled(env, region=None)

Get the analyses enabled pages list

Paramètres
  • region (str) – Region name (e.g., auvergne-rhone-alpes)

  • env (str) – Environment considered (e.g., dev)

Renvoie

pages names

Type renvoyé

list

historique_et_impact_emission_ges(region, zone, zone_id, reference_year, final_year, resultat_impact, passage_table, is_national, remove_passage_data: bool = True)

Données historique d’émissions GES + impact pour actions réductions de conso. Retourne une coroutine

historique_et_impact_polluants_atmo(region, zone, zone_id, reference_year, final_year, resultat_impact, pollutant, passage_table, is_national, remove_passage_data: bool = True)

Données historique d’émissions des polluants atmosphériques + impact pour actions réductions de conso. Retourne une coroutine

async historique_et_impact_prod(region: str, zone: str, zone_id: str, reference_year: int, final_year: int, resultat_impact: Impacts, passage_table: PassageTable, remove_passage_data: bool = True)
historique_et_impact_reduction_conso(region, zone, zone_id, reference_year, final_year, resultat_impact, passage_table, is_national, remove_passage_data: bool = True)

Données historique de conso + impact pour actions réductions de conso. Retourne une coroutine

async nombre_actifs_en_voiture(region, zone, zone_id, year=None, buffer=0)

Renvoie le nombre d’actif en voiture.

Paramètres
  • region (str) – Nom de la région (schéma en base)

  • zone (str) – Zone géographique sélectionnée

  • zone_id (str) – Identifiant de la zone géographique

  • buffer (int) – Détermine le nombre d’actif dans un rayon donnée en km

Type renvoyé

float

async obtenir_annee_max_indicateur(region, donnees, data_ratio)
async suivi_trajectoire(region, zone, zone_id)

Données pour la page de suivi de trajectoire

i.e. les données historiques de consommation & production d’énergie renouvelable pour un territoire donné.

Paramètres
  • region (str) – Nom de la région (schéma en base)

  • zone (str) – Zone géographique sélectionnée

  • zone_id (str) – Identifiant de la zone géographique

Renvoie

  • Données de barplot conso vs. production énergie

  • Données pour stacked plot de conso & production énergie renouvelable par catégories

  • chiffres-clé pour le territoire sélectionné

Type renvoyé

dict

tableau_bord module

Module dédié aux fonctions d’intéraction avec la base de données pour les tableaux de bord

async assign_zone(tableau_id, zone, code_insee_territoire)

Affecte une zone à un tableau

Paramètres
  • tableau_id (int) –

  • zone (str) – “departement”, “epci”, etc.

async check_is_valid_dashboard(region, user, thematiques)
async check_write_rights_on_dashboard(region, dashboard_id, usermail)
clean_blocks(graphs)
async create_dashboard(titre, user, description, region, thematiques)

Créer un nouveau tableau de bord

Paramètres
  • titre (str) –

  • usermail (str) –

  • description (str) –

  • region (str) –

  • thematiques (list) –

Renvoie

Nouvel identifiant

Type renvoyé

dict

async delete_dashboard(dashboard_id: int, current_user, region: str)

Delete a dashboard from database with the given id and the current user.

Renvoie

dashboard ID or False if the dashboard does not exist (or couldn’t be deleted)

Type renvoyé

dict

async duplicate_dashboard(region: str, user, dashboard_id: int, title: str)
async get_dashboard(region, tableau_id, utilisateur, type_territoire, code_insee_territoire)

Récupère les données pour un tableau donné.

Paramètres

tableau_id (int) –

Type renvoyé

dict

async is_dashboard_owner(usermail, tableau_id, region)

Vérifie si le tableau spécifié par son identifiant appartient bien à l’utilisateur·rice

Paramètres
  • usermail (str) –

  • tableau_id (int) –

Type renvoyé

bool

async list_dashboard_assignments(tableau_id)
async list_public_dashboards(region, type_territoire, code_insee_territoire)

Récupère l’ensemble des tableaux publiés pour un type de territoire ou territoire spécifique donné

Paramètres
  • usermail (str) –

  • region (str) –

Renvoie

Liste de dict

Type renvoyé

list

async liste_tableau(user, region)

Récupère l’ensemble des tableaux pour un·e utilisateur·rice et région données

Paramètres
  • user (Utilisateur) –

  • region (str) –

Renvoie

Liste de dict

Type renvoyé

list

async remove_dashboard_assignment(tableau_id, type_territoire, code_insee_territoire)
async remove_dashboard_sharing(dashboard_id: int, region: str, user, is_readonly_share=False)

Remove the current user form the list of shared user for the specified dashboard

async share_dashboard(tableau_id, emails, is_readonly_share=False)

Share a dashboard with other users by their email

Paramètres
  • tableau_id (int) – The dashboard identifier.

  • emails (list[str]) – The list of emails.

async update_dashboard(dashboard_id, titre, user, description, region, thematiques)

user module (controller)

Module de gestion des utilisateurs

class User(user_id, exp, mail, profil, publication, est_admin, region, territoire, acces_indicateurs_desactives, global_admin, prenom, nom, organisation, fonction, territoire_predilection, utiliser_territoire_predilection, code_postal, can_validate_poi_contributions, poi_contributions, national_region)

Bases : NamedTuple

to_dict()
acces_indicateurs_desactives: bool

Alias for field number 8

can_validate_poi_contributions: bool

Alias for field number 17

code_postal: str

Alias for field number 16

est_admin: bool

Alias for field number 5

exp: int

Alias for field number 1

fonction: str

Alias for field number 13

global_admin: bool

Alias for field number 9

mail: str

Alias for field number 2

national_region: str

Alias for field number 19

nom: str

Alias for field number 11

organisation: str

Alias for field number 12

poi_contributions: list

Alias for field number 18

prenom: str

Alias for field number 10

profil: str

Alias for field number 3

publication: str

Alias for field number 4

region: str

Alias for field number 6

territoire: str

Alias for field number 7

territoire_predilection: str

Alias for field number 14

user_id: str

Alias for field number 0

utiliser_territoire_predilection: bool

Alias for field number 15

async activate_user(region, login, password)

Active le compte associé au login.

Paramètres
  • login (str) – Login (i.e. mail) du compte.

  • password (str) – Mot de passe générer de manière aléatoire. Le mot de passe est hashé dans cette fonction.

async admins()

Récupère la liste de tous les admins

Type renvoyé

dict

auth_user(request, region)

Returns information about the authenticated user

Paramètres

region (str) – region key

Renvoie

object with user information from database

Type renvoyé

User

async create_user(prenom, nom, password, mail, organisation, fonction, territoire_predilection, utiliser_territoire_predilection, territoire, region, profil, actif, rgpd="Pas d'accord", is_national=False)

Crée un·e utilisateur·rice en base de données.

Paramètres
  • prenom (str) – Prénom.

  • nom (str) – Nom.

  • password (str) – Mot de passe. Il est hashé dans cette fonction. Peut être None.

  • mail (str) – Email.

  • organisation (str) – Structure / organisation.

  • territoire_predilection (str) – Territoire représenté par un json { zoneType, zoneId, zoneMaille }.

  • utiliser_territoire_predilection (bool) – Utiliser le territoire comme territoire par défaut à la connexion.

  • code_postal (str) – Code postal

  • profil (str) – “admin” ou “utilisateur”.

  • actif (boolean) – Compte actif ou non.

  • rgpd (string) – Case cochée ou non.

async deactivate_user(region, login)

Désactive le compte associé au login.

Paramètres

login (str) – Login (i.e. mail) du compte

async delete_refresh_token(region, login)

Efface le refresh token JWT associé à un login.

Quand le token est invalidé par sa date d’expiration par exemple, on l’efface. Pour ensuite en créer un nouveau avec une nouvelle date.

Paramètres

login (str) – Login (i.e. mail) du compte

async delete_user(region, login)

Efface le compte associé au login.

Paramètres

login (str) – Login (i.e. mail) du compte

async get_refresh_token(region, login)

Récupère le refresh token JWT associé à un login.

Paramètres

login (str) – Login (i.e. mail) du compte

Renvoie

keys: token, creation_date

Type renvoyé

dict

async get_regions_national_user(usermail)

Returns information about the authenticated user

Paramètres

region (str) – region key

Renvoie

object with user information from database

Type renvoyé

User

async get_user_password(region: str, login: str)

Récupère le hash du mot de passe d’un·e utilisateur·trice en fonction de son login.

Paramètres

login (str) – Login de l’utilisateur / utilisatrice, i.e. son email

Type renvoyé

str (ou None si l’utilisateur n’a pas été trouvé)

hash_pass(password)

Return a hashed password

async is_active_user(region: str, login: str) bool

Check is the specified login corresponds to an active user in the database

async is_user_in_national_region(usermail, region)

Checks whether a user is associated to a national region.

Paramètres
  • usermail (str) –

  • region (str) –

Renvoie

whether there is a user associated with a region in user_national_regions table.

Type renvoyé

boolean

async send_mail(sender, sender_label, reply_to: str | None, receiver, subject, content, settings, typemail='plain', encoding='utf-8', content_plain='')

Envoi de mail asynchrone

Renvoie

un message de statut

async set_user_password(region, login, password)

Stocke un nouveau mot de passe associé au login.

Paramètres
  • login (str) – Login (i.e. mail) du compte.

  • password (str) – Mot de passe générer de manière aléatoire. Le mot de passe est hashé dans cette fonction.

async store_refresh_token(region, login, token)

Stocke le refresh token JWT associé à un login.

Paramètres
  • login (str) – Login (i.e. mail) du compte

  • token (str) – Token généré par sanic-jwt.

async update_connexion_info(region, login)

Met à jour les données de connexion associées à un compte.

Paramètres

loging (str) – Login (i.e. mail) du compte

async update_user(region: str, login: str, userdata: dict)
async user(region, login)

Récupère toutes les infos d’un.e utilisateur/utilisatrice.

Paramètres

login (str) – Login de l’utilisateur / utilisatrice, i.e. son email

Type renvoyé

dict

async users(region='')

Récupère toutes les infos de tous les utilisateurs/utilisatrices.

Type renvoyé

dict

zone module

async add_zone(region: str, name, zone, maille, order)

Fonction qui modifie une zone.

Paramètres
  • region (str) – Nom de la région (schéma en base)

  • old_name (str) – old zone key

  • new_data (dict) – new zone data

async all_regions()

Fonction qui renvoie une liste de l’ensemble des régions proposées dans terristorry.

Type renvoyé

list

async all_territorial_levels(region: str)

Fonction qui renvoie une liste de toutes les mailles existantes.

Paramètres

region (str) – Nom de la région (schéma en base)

Type renvoyé

list

async all_territories_codes_for_level(region: str, level)

Fonction qui renvoie une liste de tous les codes uniques pour un niveau territorial donné.

Paramètres
  • region (str) – Nom de la région (schéma en base)

  • level (str) – Maille territoriale

Type renvoyé

list

async all_zones(region: str, with_order=False)

Fonction qui renvoie une liste de dict des mailles et des sous mailles associées ainsi que leur libellé.

Paramètres

region (str) – Nom de la région (schéma en base)

Type renvoyé

list

async change_order_zone(region: str, name, current_position, new_position)

Fonction qui modifie une zone.

Paramètres
  • region (str) – Nom de la région (schéma en base)

  • old_name (str) – old zone key

  • new_data (dict) – new zone data

async delete_zone(region: str, name, current_position)

Delete a zone.

Paramètres
  • region (str) – Nom de la région (schéma en base)

  • name (dict) – zone name

async edit_zone(region: str, old_name, new_name, zone, maille)

Fonction qui modifie une zone.

Paramètres
  • region (str) – Nom de la région (schéma en base)

  • old_name (str) – old zone key

  • new_data (dict) – new zone data

async liste_mailles_regions()

Fonction qui renvoie un dict de l’ensemble des régions et des mailles associées.

Type renvoyé

dict

async toggle_zone(region: str, name)

Hide/show a zone.

Paramètres
  • region (str) – Nom de la région (schéma en base)

  • name (dict) – zone name