pnx-si / odk2gn Goto Github PK
View Code? Open in Web Editor NEWPython module for data synchronisation between ODK and GeoNature-monitoring
License: GNU General Public License v3.0
Python module for data synchronisation between ODK and GeoNature-monitoring
License: GNU General Public License v3.0
Les CSV générés sur les listes d'espèces posent problème avec les valeurs de champs nom_complet en raison des virgules utilisées dans les parenthèses avec l'auteur. Et on peut imaginer le même avec les nom_vern qui sont séparés par des virgules.
Je propose d'utiliser le nom scientifique simple (lb_nom) et le premier nom vernaculaire (avec un split_part sur le nom_vern).
cf. commit sur la PR #6
Bonjour à tous,
J'essaie de tester odk2gn sur une serveur de test en debian 12 :
odk2gn_config.toml
avec la description du protocole stomSuite à cela, j'ai voulu mettre en place la synchronisation comme précisé dans la doc, mais je n'ai pas de partie odk2gn dans le menu latéral du module Admin :
gn_permission.t_objects
)cor_object_module
t_odk_forms
ont bien été créés (table vide)Sans pouvoir modifier les permissions via le module admin, j'ai quand meme essayé la commande de synchronisation :
geonature odk2gn synchronize monitoring --form_id=stom_form --project_id=3 stom
Et j'obtiens les erreurs suivantes :
util.warn(
Could not read file at: /home/geonatureadmin/.pyodk_cache.toml. FileNotFoundError(2, 'No such file or directory').
Traceback (most recent call last):
File "/home/geonatureadmin/geonature/backend/venv/lib/python3.11/site-packages/pyodk/_utils/config.py", line 77, in read_toml
with open(path, "r") as f:
^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/home/geonatureadmin/.pyodk_cache.toml'
INFO:app:--- Start synchro for module stom ---
WARNING:app:The following specific columns are missing from ODK form :
-habitat_input
WARNING:app:Image not found for submission uuid:168db136-edec-424e-8e4f-168141c13d67
WARNING:app:Image not found for submission uuid:168db136-edec-424e-8e4f-168141c13d67
WARNING:app:Image not found for submission uuid:168db136-edec-424e-8e4f-168141c13d67
WARNING:app:Image not found for submission uuid:168db136-edec-424e-8e4f-168141c13d67
ERROR:app:Error while update submision state
INFO:app:--- Finish synchronize for module stom ---
Sans surprise, rien ne s'est synchronisé ! Est ce qu'il s'agit d'un problème de droits ? Pourquoi je n'ai pas accès à la gestion des permissions ?
Merci pour votre aide !
Actuellement les commandes du module sont directement synchronize
, upgrade_odk_form
et odk_schema
et . Il serait bien de les préfixer avec odk2gn
pour plus de lisibilité
Bonjour,
Actuellement seul les niveaux "visites" et "observations" sont implémentés. Il n'est pas possible de créer des sites à partir des formulaires ODK.
Est-ce qu'il y avait des contraintes dans la gestion des créations de sites ou est-ce simplement pour des questions de temps que vous n'avez pas fait ces dev ?
Nous nous sommes lancés dans la création de formulaires ODK avec création de sites mais on coince sur l'import de ces formulaires du coup...
Merci d'avance
La création de sites avec une géométrie de types polygones soulève une erreur à l'INSERT
en base de donnée. La geom de l'INSERT
est de type 3D alors que le champs attend une géométrie 2D.
(psycopg2.errors.InvalidParameterValue) Geometry has Z dimension but column does not [SQL: INSERT INTO gn_monitoring.t_base_sites (id_inventor, id_digitiser, id_nomenclature_type_site, base_site_name, base_site_description, base_site_code, first_use_date, geom, uuid_base_site, meta_create_date, meta_update_date, altitude_min, altitude_max) VALUES (%(id_inventor)s, %(id_digitiser)s, %(id_nomenclature_type_site)s, %(base_site_name)s, %(base_site_description)s, %(base_site_code)s, %(first_use_date)s, ST_GeomFromEWKT(%(geom)s), (SELECT uuid_generate_v4() AS uuid_generate_v4_1), %(meta_create_date)s, %(meta_update_date)s, %(altitude_min)s, %(altitude_max)s) RETURNING gn_monitoring.t_base_sites.id_base_site]
[parameters: {'id_inventor': 32830, 'id_digitiser': None, 'id_nomenclature_type_site': 816, 'base_site_name': 'Test chrono', 'base_site_description': 'Chronoventzire ', 'base_site_code': None, 'first_use_date': datetime.datetime(2023, 8, 1, 9, 39, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'geom': 'POLYGON Z ((5.738817 45.187659 0, 5.740505 45.188183 0, 5.741578 45.187478 0, 5.739797 45.186505 0, 5.738817 45.187659 0))', 'meta_create_date': None, 'meta_update_date': None, 'altitude_min': None, 'altitude_max': None}] (Background on this error at: http://sqlalche.me/e/13/9h9h
Je propose de transformer la geom en 2D dans la fonction to_wkt avec shapely.
Bonjour l'équipe,
Après de multiples tests sur différents modules, j'arrive à aboutir sur quelques conclusions :
Un module monitoring (assez spécifique) sans partie d'observation (seulement : groupe site, site et visite), qui fonctionne sur géonature sans problème, ne peut pas aboutir sur les commandes d'upgrade_odk_form
et synchronize
via ODK.
Retour d'erreur sur la commande upgrade_odk_form
:
File "/home/gnadmin/gnModules/odk2gn/odk2gn/monitoring_config.py", line 7, in get_nomenclatures_fields
config[niveau].get("specific", []),
KeyError: 'observation'
Retour d'erreur sur la commande synchronize
:
File "/home/gnadmin/gnModules/odk2gn/odk2gn/monitoring_utils.py", line 130, in parse_and_create_visit
visit_generic_column = monitoring_config["visit"]["generic"]
TypeError: 'NoneType' object is not subscriptable
Vous me confirmez de votre côté que les modules doivent impérativement avoir une partie observation, pour que tout se déroule bien pour la liaison avec ODK ?
La version 0.2.0 de PyODK apporte quelques changements, la fonction auth
n'existe plus dans la classe Client
et soulève l'erreur suivante:
(venv) user:~/gnModules/odk2gn$ synchronize stom --form_id=stom_form --project_id=1
INFO:app:--- Start synchro for module stom ---
WARNING:app:No mapping found for module stom - get the default ODK monitoring template mapping !
WARNING:app:The following specific columns are missing from ODK form :
-habitat_input
URL BIS################## projects/1/forms/stom_form/submissions/uuid:6f2d4215-262b-4e88-a987-0161ecfe87f0/attachments/None
WARNING:app:Image not found for submission uuid:6f2d4215-262b-4e88-a987-0161ecfe87f0
URL BIS################## projects/1/forms/stom_form/submissions/uuid:6f2d4215-262b-4e88-a987-0161ecfe87f0/attachments/None
WARNING:app:Image not found for submission uuid:6f2d4215-262b-4e88-a987-0161ecfe87f0
URL BIS################## projects/1/forms/stom_form/submissions/uuid:6f2d4215-262b-4e88-a987-0161ecfe87f0/attachments/None
WARNING:app:Image not found for submission uuid:6f2d4215-262b-4e88-a987-0161ecfe87f0
URL BIS################## projects/1/forms/stom_form/submissions/uuid:6f2d4215-262b-4e88-a987-0161ecfe87f0/attachments/None
WARNING:app:Image not found for submission uuid:6f2d4215-262b-4e88-a987-0161ecfe87f0
URL BIS################## projects/1/forms/stom_form/submissions/uuid:6f2d4215-262b-4e88-a987-0161ecfe87f0/attachments/None
WARNING:app:Image not found for submission uuid:6f2d4215-262b-4e88-a987-0161ecfe87f0
Traceback (most recent call last):
File "/home/gnadmin/geonature/backend/venv/bin/synchronize", line 11, in <module>
load_entry_point('odk2gn', 'console_scripts', 'synchronize')()
File "/home/gnadmin/geonature/backend/venv/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
return self.main(*args, **kwargs)
File "/home/gnadmin/geonature/backend/venv/lib/python3.9/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/home/gnadmin/geonature/backend/venv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/gnadmin/geonature/backend/venv/lib/python3.9/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/home/gnadmin/gnModules/odk2gn/odk2gn/main.py", line 179, in synchronize
update_review_state(project_id, form_id, sub["__id"], "approved")
File "/home/gnadmin/gnModules/odk2gn/odk2gn/odk_api.py", line 79, in update_review_state
token = client.auth.get_token(
AttributeError: 'Client' object has no attribute 'auth'
Hello l'équipe,
Suite à mon dernier post #28 on a eu quelques surprises en passant la synchro automatique (synchronize_all_modules
) la synchronisation aboutie ! (Alors qu'en passant en ligne de commande par synchronize
aucun n'aboutissement).
Les données saisies par formulaire sont bien synchronisées sur la base de donnée géonature sans bug ou problème.
Par contre dans le fichier log, on a des erreurs suite à la fonction upgrade_all_forms
qui est aussi lancé mais qui n'aboutie pas. Même erreur que #28 sur upgrade_odk_form
ce qui est cohérent.
j'ouvre une issue mais c'est plus a titre d'information/retour d'utilisation.
En tout cas merci pour tout votre travail
Faire de la doc sur les entry point
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.