-
Notifications
You must be signed in to change notification settings - Fork 102
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Synthèse - API post #736
Comments
Ceci existait en V1 |
Oui exact. |
Avec amandine on propose une function SQL qui permet d'inserer/actualiser des lignes dans la synthèse à partir d'une vue ou d'une table voir
où l'on actualise les lignes de la synthèse correspond aux lignes de la selection de Si une ligne de la selection est présente dans la synthèse c'est une mise à jour, sinon c'est un ajout. La fonction python Il reste à faire une fonction pour gérer les suppressions. Testé avec le module monitoring (où les |
Version 2.4.0 : Ajout de fonctions SQL d'insertion de données dans la Synthèse ( |
Je propose une réflexion sur l'api POST synthèse. C'est un peu long... L'api POST synthèseL'api synthèse serait conçue pour un import ponctuel et dynamique de données, en création ou modification et pour 1 ligne à la fois. Le but ici est de donner les moyens de synchroniser les données d'une application tierce avec la synthèse de GéoNature (et de rendre possible l'intégration des données dans la synthèse quand on a pas d'accès à la base de GN en écriture) Les PrérequisIl faut satisfaire certains prérequis pour pouvoir envoyer des données depuis une application tierce vers la synthèse. Module
Utilisateur de l'api POST
Medias ???
UUIDs
JDD
Source
Les données post dataLes données nécessaires pour la synthèse sont:
Traitement des données en backend
DocumenterExemples d'utilisations
|
Salut Joel, Module:
Authentification:
Média:
UUID:
JDD:
Source:
Table t_applications:
Nomenclatures Observateurs
Pour une API de modification des données là par contre je ne sais pas trop. Quid des données entrée via un module GeoNature qui pourraient être modifié dans le Synthese par l'API et pas dans leurs tables sources ? |
Merci théo pour ces retours. Pour ton dernier point concernant la modification. La table t_application permettrait de reguler l'id_source. |
@joelclems je suis assez d'accord avec @TheoLechemia concernant l'évolution de la table Sinon, j'ai travaillé sur un format d'échange de données qui permette d'importer de gros jeu de données dans GeoNature. Cela peut peut être te servir pour l'API. |
J'ai modifié le texte avec les remarques. Ca a l'air très complet le liens sur l'échange de données. A voir comment blinder l'api pour ne pas écrire n'importe où |
Concernant l'API Post de la Synthèse, je pense qu'il faut s'appuyer sur les réflexions qui ont été faites sur le module IMPORT, ainsi que les réflexions initiées pour les échanges automatisés de données entre instances de GeoNature : #789 |
Un premier point général à considérer est le fait qu'en postant directement dans l'API, on déroge en partie à un principe de GeoNature où toute donnée dans la Synthèse a sa donnée brute par ailleurs dans GeoNature. Par exemple, si on s'appuie sur ce qui a été fait dans IMPORT, il serait pertinent de pouvoir paramétrer si l'on calcule ou pas les UUID_SINP et les altitudes si elles ne sont pas fournis lors du POST. Pour les UUID, si il ne sont pas fournis depuis la BDD source, il peut être souhaitable de les générer dans GeoNature. Sinon pas de validation possible notamment. Je ne raisonnerai pas non plus en "applications" qui postent, c'est plus large. Source me semble mieux en effet. Pour les nomenclatures, je suis OK pour privilégier les codes. Cependant si l'outil source n'en dispose pas, à voir si on ne permet pas de poster le libellé de la nomenclature. Si on doit réconcilier des personnes ou des organismes, alors il faudrait passer par des UUID selon moi. Pour s'authentifier je me demande si on ne pourrait pas passer par une clé, plutôt qu'un token utilisateur ? Définir dans une table de GN des URL et leur clé. Si c'est la bonne URL avec la bonne clé qui poste, alors on accepte le POST. Je ne sais pas si c'est intéressant ou pas comme solution. |
Salut tous le monde, Avant tout, je voulais vous partager ma vision de cette API pour être sûr que l'on parle de la même chose: Sur ce constat, je trouve intéressante et rassurante cette notion d'une table synthèse recalculable. Concernant les nomenclatures, soit l'application tierce peuple ses listes en demandant les valeurs possibles à GN, soit c'est un autre champ qui doit alors être inscrit dans un jsonb. Sur les médias, c'est peut-être encore à murir mais je pense que le besoin va vite émerger (surtout sur le volet app nomade). Je trouve ce système de clé attribuée à une application intéressant pour autoriser la communication avec l'API. Ça force à "enregistrer" son application dans GN. Mais est-ce que ce ne doit pas être couplé avec l'authentification utilisateur ? (qui permettrait de récupérer des droits côté GN ?) Si je devais soulever des questions précédemment actées, n'hésitez pas à me le faire savoir. Je ne sais pas vraiment quel est le niveau d'avancement du projet et je ne tiens pas à remettre en cause des choix déjà faits. |
Concernant les droits d'accès de l'API, comme le suggère @camillemonchicourt l'utilisation d'une clé ou jeton (à distinguer du couple login/mot de passe) est préférable. La solution JWT est parfaitement adaptée à ce cas d'usage. Il me semble d'ailleurs qu'il y a des pull-request sur le sujet #662. De plus, cela n'utilise pas de cookie et est donc compatible avec les applis mobiles et surement avec Qgis car le jeton peut être transmis dans les entête HTTP ou comme paramètre ( |
Merci Ludovic pour ces remarques. Le sujet est toujours en cours de réflexion, et toutes les contributions sont les bienvenues.
|
Bonjour, Ma première idée en lisant tout ça, même si je n'ai pas tous les tenants et aboutissants du projet, serait de faire passer ce mécanisme via le module d'import et pas en direct dans la synthèse. La synthèse devrait être recalculable comme le dit camille, mais aussi et surtout, je pense que les données sont toujours destinées à être modifiées :
Stocker les données dans un format brut (comme le fait gn_imports dans son schéma archive) permettrait de garder systématiquement la donnée brute sans aucune info modifiée/recalculée. Ca permettrait de conserver l'idée d'une synthèse qui ne fait que synthétiser les données réparties ailleurs dans la base. Et de conserver le mécanisme de la t_source actuelle, à savoir la source=module d'import (+ id_import). Pour terminer sur la lisibilité, on saurait que les données de la synthèse proviennent soit d'un module de saisie, soit du module d'import pour les données venant de l'extérieur (que ca vienne en api, en fichier csv ou autre ne devrait pas forcement changer le cheminement de la donnée importée). |
Juste quelques remarques en mémo pour le prochain point au tel :
|
En résumé de la réunion de tout à l'heure et pour définir la suite Les grandes lignes
Etape 1
SQL
Backend
Améliorations
les ++
|
J'ai bien en tête que ca diffère un peu de l'idée vue cet aprem, mais pour répondre à la question :
Vu qu'en quelque sorte, cette API a vocation "d'externaliser des modules de saisie" serait-il intéressant d'imaginer :
|
Pour moi, en terme de concept et de vocabulaire ce ne sont pas des modules ni des applications qui vont poster dans la Synthèse mais bien des sources. Des sources externes. Une table t_sources_api me semble bien. |
Merci Joël pour ce résumé très clair, J'aurais quelques questions pour ma compréhension,
Pour le lien source / jdd, j'y vois une table cor_source_dataset car plusieurs JDD pourraient être alimentés par une même source (en remplacement de cor_module_dataset -> élargissement de cette table à des sources plutôt que des modules ?). J'y pense que maintenant, mais la déclaration d'une source devrait se faire via une page d'admin. Car on n'est pas certains de nos droits d'écriture en base. |
Le fait de limiter les JDD par source ne me paraît pas forcément une nécessité, du moins pas dans un premier temps. |
@ludovic l'id_role dans la table permettrai de faire le lien entre l'utilisateur et les sources (1-n) pour les jdd je serai plutot pour une table cor_source_dataset ( le pendant de cor_module_dataset pour les sources) on en a pas parlé mais effectivement il faudrait avoir une interface d'administration pour pouvoir créer / gérer les sources |
Bonjour, Est-ce que l'API Post vers la synthèse a été implémentée ou terminée ? La question de pose d'utiliser cette solution pour poster les données via le module d'imports, en simplifiant son backend. |
Il est souhaité ajouter la possibilité de poster directement dans la synthèse depuis une application tierce grâce à une API post sécurisée et authentifiée.
The text was updated successfully, but these errors were encountered: