PnX-SI / odk2gn

Python module for data synchronisation between ODK and GeoNature-monitoring
GNU General Public License v3.0
3 stars 3 forks source link

Erreur sur la synchro et upgrade sur un module sans partie d'observation #28

Open afourneyron opened 7 months ago

afourneyron commented 7 months ago

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_formet synchronizevia 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 ?

TheoLechemia commented 7 months ago

Désolé pour la réponse tardive. On utilise pas encore le module en production, mais on va le deployer pour ce printemps. On te tiens au courant quand on s'y plonge plus serieusement. N'hésite pas à nous dire si tu as pu avancer

lpojgc commented 5 months ago

@TheoLechemia , des nouvelles info à nous apporter ? de notre côté, on vient de reprendre les tests. merci !

TheoLechemia commented 5 months ago

Bonjour, Un petit soucis de fond carte stockable sur les carte SD a retardé notre deploiement. Quoi qu'il est soit, il est possible d'avoir des protocoles de monitoring sans le niveau "observation", donc il devrait en être de même pour la connexion à ODK... Comme on a pas tout tester, il reste des petits bugs. Pour la première commande, un truc comme ça devrait marcher :

fields = dict(
    config.get(niveau, {} ).get("specific", []),
    config.get(niveau, {} ).get("generic", []),
)

à cette ligne la : https://github.com/PnX-SI/odk2gn/blob/main/odk2gn/monitoring_config.py#L7

Pour la commande synchronize c'est plus étrange car c'est l'objet monitoring_config qui est None, le même objet qui n'a pas l'air d'être None dans la commande précédente ? Ou alors c'est monitoring_config["visit"] qui est None , mais du coup là c'est pas normal d'avoir un module monitoring sans visite.

Est-ce que vous pouvez tester ça et me faire un retour. Je corrige en fonction. Ou même faire une PR si vous le sentez.

Merci