Skip to content
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

Ajout d'un onglet "Ajouter un taxon" et gestion des versions avec Alembic #509

Open
GirardinClaire opened this issue Jul 22, 2024 · 7 comments

Comments

@GirardinClaire
Copy link

GirardinClaire commented Jul 22, 2024

Bonjour,

Dans le cadre de mon stage de fin d'études (à l'ENSG Géomatique, option technologie des systèmes d'information) au sein de la DEAL 974, sous la supervision de Rémi Bouilly, je suis chargée d'ajouter un onglet "Ajouter un taxon". Cette fonctionnalité est nécessaire pour automatiser cette opération, actuellement réalisée manuellement.

J'ai fini de développer cette fonctionnalité, mais j'ai rencontré un problème avec Alembic (que j'ai pu contourner pour terminer). Étant débutante avec Flask et Alembic, mes explications / questions peuvent paraître maladroites.

Pour enregistrer un nouveau taxon, j'ai créé un formulaire permettant aux utilisateurs (administrateurs uniquement) de remplir tous les attributs du taxon. Afin d'assurer la validité et la cohérence des données, j'utilise des autocomplétions pour les champs règne, phylum, classe, ordre, famille, sous_famille et tribu. Ces autocomplétions existent déjà dans l'onglet "taxref". J'ai donc réutilisé cette structure mais avec l'ajout des champs sous_famille et tribu, qui ne sont pas présents.
Pour ajouter les autocomplétions, j'ai ajouté ces 2 champs à la table vm_taxref_hierarchie du schéma taxonomie. J'ai donc mis à jour la classe VMTaxrefHierarchie dans le fichier apptax/taxonomie/models.py en conséquence.

Si je ne me trompe pas, il faudrait utiliser Alembic pour gérer les migrations de la base de données et prendre en compte ces modifications. Cependant, j'ai rencontré des difficultés à ce niveau. Il semble qu'il me manque plusieurs versions, notamment les versions e0ac4c9f5c0a, fa35dfe5ff27, 72f227e37bdf et f7374cd6e38d. J'ai contourné ce problème, pour pouvoir finir de développer cet onglet, en modifiant la bdd à la main. Cela fonctionne parfaitement bien, mais j'aimerais que ce soit fait avec Alembic.

Aurais-je manqué une étape ou mal compris quelque chose ? Pourriez-vous m'aider à résoudre ce problème ?

Merci d’avance pour votre aide,
Claire Girardin

@camillemonchicourt
Copy link
Member

Bonjour,

C'est intéressant.
Mais avant d'initier un tel développement, il aurait été intéressant d'en parler ici pour pouvoir l'articuler avec les projets en cours.

Et particulièrement car une refonte de l'interface de TaxHub est en cours depuis quelques mois et est actuellement en phase de finalisation : #297 (comment)

Pour que votre développement puisse être intégré dans les nouvelles versions de TaxHub, il aurait donc fallu en discuter.
Sinon vous allez disposer de votre propre TaxHub, mais qui sera isolé et ne pourra pas bénéficier des évolutions réalisées collectivement par la communauté.

Avant de regarder les aspects techniques, il faut voir pourquoi et comment implémenter la fonctionnalité d'ajout de taxons.

L'objectif est de pouvoir ajouter des taxons dans la table taxonomie.taxref ?

C'est un besoin ponctuel mais régulier, mais il faut faire bien attention à cela et le faire en connaissance de cause, car Taxref est un référentiel national qui évolue chaque année. Donc commencer à le modifier ou l'enrichir est risqué.

Il me semble qu'il y a déjà eu plusieurs discussions sur le sujet, mais il faut bien définir comment gérer ça de manière claire et propre au niveau de la BDD, idéalement pour ne pas venir modifier ou enrichir localement la table taxonomie.taxref.
Ou alors bien identifié les taxons provenant de Taxref et ceux ajoutés localement pour ne pas qu'il y ait de confusion, mais aussi éventuellement raccrocher un taxon ajouté localement au bon taxon de Taxref quand celui-ci est ajouté dans une nouvelle version.

@orovellotti
Copy link

Effectivement un besoin régulier pour nos clients aussi.

Ca serait intéressant d'envisager de réfléchir a un système de type pull request / issue sur TaxRef (ou autre référentiel) afin que chaque ajout soit discuter, puis éventuellement intégré.

@camillemonchicourt
Copy link
Member

Oui côté Taxref et son enrichissement, c'est intéressant mais un autre sujet.
Il faudrait voir avec l'équipe Patrinat qui bosse sur Taxref (@gargo-mnhn), mais le fait que le suivi et les évolutions de Taxref soient ouvert sur une plateforme ouverte (forum, github, gitlab ou autre...) est aussi un sujet qui nous intéresse.

@gargo-mnhn
Copy link

Bonjour,
Depuis peu taxref s'est doté de son propre système de ticketing : https://taxref.mnhn.fr/taxref-web/issues. Ce n'est pas encore totalement fonctionnel mais ça marche :)
On avait commencé par un github mais c'est délicat de demander aux gens de créer un compte github pour faire un signalement taxref. Du coup compte INPN.
Par la suite, le taxon est immédiatement dispo dans l'API taxref : https://taxref.mnhn.fr/api/taxa/1054990/beta par exemple alors que https://taxref.mnhn.fr/api/taxa/1054990 répond Not found
Bye

@camillemonchicourt
Copy link
Member

OK super intéressant, merci pour ce retour et ces infos.

@rbouilly
Copy link

Bonjour,

En fait ce développement est là pour simplifier une procédure qui est déjà en place sur notre instance SINP, et qui nous permet de gérer des taxons "locaux" qui ne sont pas encore référencés dans Taxref.

La Réunion à la particularité d'avoir un très fort taux d'endémisme, et de nouvelles espèces endémiques sont observées chaque année. Par ailleurs, de par sa situation géographique et son histoire, c'est un territoire qui est particulièrement sensible aux espèces exotiques envahissantes. Nous devons donc régulièrement gérer de nouvelles espèces exotiques qui ne sont pas présentes en métropole, et ne sont donc pas encore référencées dans Taxref.

Pour ces raisons, nous devons régulièrement ajouter des taxons "temporaires" dans Taxref, en attendant que ces taxons soient ajoutés officiellement dans le référentiel. Nous gérons l'ajout de ces taxons, en leur attribuant un cd_ref négatif, et en faisant un travail de réconciliation à chaque mise à jour de Taxref, pour assurer leur remplacement dans le cas où le taxon "officiel" correspondant serait désormais disponible dans la nouvelle version de Taxref.

Jusqu'à présent nous faisions ce travail directement en base de données, via des scripts SQL, comme de nombreuses autres procédures de gestion de notre SINP. Nous avons lancé un chantier fin 2022, pour remplacer progressivement toutes ces actions techniques qui se font en SQL, par des fonctionnalités permettant de faire la même chose via une interface graphique, et pouvant donc être prise en charge par une personne n'ayant pas d'accès à la BDD, ni de compétences en SQL.

Le développement de cette interface de saisie d'un taxon "temporaire" rentre dans ce cadre. Nous savons qu'une refonte de l'interface de Taxhub est en cours, et donc nous avons essayé de faire un développement qui soit le moins adhérent possible à l'interface existante, et qui ne nécessite pas (ou le moins possible) de modifier l'installation standard, ce qui nous permettra de pouvoir continuer à mettre à jour Taxhub, tout en conservant cet ajout fonctionnel.

Si cela intéresse la communauté, nous pourrons tout à fait retravailler ce développement dès que la nouvelle interface de Taxhub sera disponible, afin qu'il puisse être intégré dans la version standard. Nous avons prévu une enveloppe budget dédiée à ce sujet pour 2025.

@camillemonchicourt
Copy link
Member

Oui oui c'est un besoin bien connu et qui n'est pas spécifique à La Réunion et qui mériterait d'être discuté et construit ensemble pour être partagé et intégré à l'outil, pour tous.

La nouvelle version de TaxHub est développée et fonctionnelle dans la branche DEVELOP et elle simplifiera la conception et le développement de cette évolution (modèle de données plus simple avec la suppression de bib_noms, suppression du framework JavaScript front-end AngularJS pour tout faire en python avec Flask-admin).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants