PnX-SI / GeoNature

Application de saisie et de synthèse des observations faune et flore
GNU General Public License v3.0
99 stars 101 forks source link

pb api/occtax/export? après modification utilisateurs.v_userslist_forall_menu #1818

Open pnrnm-sig opened 2 years ago

pnrnm-sig commented 2 years ago

Version 2.6.2

Description du bug Erreur de la connexion sécurisée avec /geonature/api/occtax/export?&format=csv (export depuis occtax) après avoir modifié la vue utilisateurs.v_userslist_forall_menu. Même erreur pour les autres formats (geojson ou shp)

Comportement attendue Pouvoir faire l'export depuis occtax comme avant, après avoir fait une modif des noms du menu déroulant.

Pour un besoin spécifique (même nom mais différent organisme parce que différents comptes utilisateurs), j'ai modifié utilisateurs.v_userslist_forall_menu. Même en revenant en arrière sur la modification de la vue le bug persiste.

Comment reproduire J'ai modifié avec dbeaver le code source de utilisateurs.v_userslist_forall_menu le champ "nom_complet" (j'ai ajouter à la fin de la concaténation le nom de l'organisme associé à l'utilisateur). En sauvegardant le code, il a fallu que je modifie aussi a.organisme en précisant varcar(100) : a.organisme::varchar(100)

J'ai redémarré geonature avec un restart geonature2

bouttier commented 2 years ago

Peux-tu nous donner les logs de l’application ?

pnrnm-sig commented 2 years ago

dans /geonature/var/log/gn_errors.log ?

[2022-03-31 15:11:31 +0200] [6590] [CRITICAL] WORKER TIMEOUT (pid:8225) [2022-03-31 15:11:31 +0200] [8225] [INFO] Worker exiting (pid: 8225) /home/pnr/geonature/backend/venv/lib/python3.7/site-packages/sqlalchemy/sql/base.py:302: SAWarning: Can't validate argument 'dialect_options'; can't locate any SQLAlchemy dialect named 'dialect' % (k, dialect_name) [2022-03-31 15:11:31 +0200] [9848] [INFO] Booting worker with pid: 9848 WARNING: Utilssqlalchemy will soon be removed from GeoNature. Please use utils_flask_sqla instead

camillemonchicourt commented 1 year ago

Problème résolu @pnrnm-sig ?

pnrnm-sig commented 1 year ago

alors non malheureusement... On est passé à la version 2.12 entre temps mais ça n'a pas résolu le problème.

J'avais une erreur 500 au moment de l'export d'occtax. J'ai consulté /var/log/geonature et trouvé qu'on avait une erreur de droit sur la vue pr_occtax.v_export_occtax que j'ai corrigé.

Maintenant que je retente l'export depuis occtax, ça tourne pendant plusieurs minutes (ça parait long par rapport à l'export de la synthèse) et ça fonctionne. Mais ! le résultat est vide. J'ai seulement id_releve_occtax et precision rempli, tout le reste est vide. J'ai fait plusieurs tests de requête, ça fait la même chose. Rien de plus /var/log/geonature

camillemonchicourt commented 1 year ago

Oui c'est toujours risqué de modifier la structure de la BDD de GeoNature et donc de utilisateurs.v_userslist_forall_menu. Mais en effet je ne vois pas pourquoi compléter un champs existant a posé soucis.

Peut-être un soucis de droits sur cette vue aussi, selon l'utilisateur avec lequel tu as modifié la vue ?

Il faudrait plus d'infos, plus de logs (ceux de GeoNature, ceux de UsersHub, ceux de PostgreSQL) lors de l'export qui pose soucis.

pnrnm-sig commented 1 year ago

Je suis allé voir /var/log/postgresql /var/log/geonature /var/log/taxhub /var/log/usershub après avoir lancé un export depuis occtax. Rien n'est ajouté aux fichiers de log

J'ai vérifié les droits de utilisateurs.v_userslist_forall_menu et les tables + vues de pr_occtax. J'ai partout grant all (with grant) à mon utilisateur principal.

Il y a autres choses à vérifier ? J'ai essayé de regarder la console du navigateur quand je lance l'export mais je m'y perds, je ne sais pas quoi vérifier (il y a pleins d'infos). Je ne suis pas hyper calé désolé...

J'ai relevé ça quand même : exemple de requête "GET https://geonature.parc-naturel-normandie-maine.fr/geonature/api/occtax/OCCTAX/export?date_low=2023-06-29&format=csv" qui passe. Mais par contre quand je copie https://geonature.parc-naturel-normandie-maine.fr/geonature/api/occtax/OCCTAX/export?date_low=2023-06-29&format=cs dans la barre d'url ça fait une erreur 500

pnrnm-sig commented 1 year ago

suite à l'erreur 500, le contenu du log geonature :

[9bc95b04-6e8c-40cc-96f1-2963d768f5b0] Exception on /occtax/OCCTAX/export [GET]
Traceback (most recent call last):
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 2525, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1822, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask_cors/extension.py", line 165, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1673, in handle_user_exception
    return self.ensure_sync(handler)(e)
  File "/home/pnr/geonature/backend/geonature/core/errors.py", line 99, in handle_exception
    raise e
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1820, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1796, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/home/pnr/geonature/backend/geonature/core/gn_permissions/decorators.py", line 56, in decorated_view
    return view_func(*args, **kwargs)
  File "/home/pnr/geonature/contrib/occtax/backend/occtax/blueprint.py", line 668, in export
    file_name=file_name,
  File "/home/pnr/geonature/backend/geonature/utils/utilsgeometrytools.py", line 48, in export_as_geo_file
    dir_path.mkdir(parents=True, exist_ok=True)
UnboundLocalError: local variable 'dir_path' referenced before assignment
[2023-06-29 10:58:18 +0200] [16881] [ERROR] Exception on /occtax/OCCTAX/export [GET]
Traceback (most recent call last):
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 2525, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1822, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask_cors/extension.py", line 165, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1673, in handle_user_exception
    return self.ensure_sync(handler)(e)
  File "/home/pnr/geonature/backend/geonature/core/errors.py", line 99, in handle_exception
    raise e
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1820, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1796, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/home/pnr/geonature/backend/geonature/core/gn_permissions/decorators.py", line 56, in decorated_view
    return view_func(*args, **kwargs)
  File "/home/pnr/geonature/contrib/occtax/backend/occtax/blueprint.py", line 668, in export
    file_name=file_name,
  File "/home/pnr/geonature/backend/geonature/utils/utilsgeometrytools.py", line 48, in export_as_geo_file
    dir_path.mkdir(parents=True, exist_ok=True)
UnboundLocalError: local variable 'dir_path' referenced before assignment[9bc95b04-6e8c-40cc-96f1-2963d768f5b0] Exception on /occtax/OCCTAX/export [GET]
Traceback (most recent call last):
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 2525, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1822, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask_cors/extension.py", line 165, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1673, in handle_user_exception
    return self.ensure_sync(handler)(e)
  File "/home/pnr/geonature/backend/geonature/core/errors.py", line 99, in handle_exception
    raise e
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1820, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1796, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/home/pnr/geonature/backend/geonature/core/gn_permissions/decorators.py", line 56, in decorated_view
    return view_func(*args, **kwargs)
  File "/home/pnr/geonature/contrib/occtax/backend/occtax/blueprint.py", line 668, in export
    file_name=file_name,
  File "/home/pnr/geonature/backend/geonature/utils/utilsgeometrytools.py", line 48, in export_as_geo_file
    dir_path.mkdir(parents=True, exist_ok=True)
UnboundLocalError: local variable 'dir_path' referenced before assignment
[2023-06-29 10:58:18 +0200] [16881] [ERROR] Exception on /occtax/OCCTAX/export [GET]
Traceback (most recent call last):
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 2525, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1822, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask_cors/extension.py", line 165, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1673, in handle_user_exception
    return self.ensure_sync(handler)(e)
  File "/home/pnr/geonature/backend/geonature/core/errors.py", line 99, in handle_exception
    raise e
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1820, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/pnr/geonature/backend/venv/lib/python3.7/site-packages/flask/app.py", line 1796, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/home/pnr/geonature/backend/geonature/core/gn_permissions/decorators.py", line 56, in decorated_view
    return view_func(*args, **kwargs)
  File "/home/pnr/geonature/contrib/occtax/backend/occtax/blueprint.py", line 668, in export
    file_name=file_name,
  File "/home/pnr/geonature/backend/geonature/utils/utilsgeometrytools.py", line 48, in export_as_geo_file
    dir_path.mkdir(parents=True, exist_ok=True)
UnboundLocalError: local variable 'dir_path' referenced before assignment