Closed MathieuLagarde closed 3 years ago
Salut, la doc utilisateur du module Occtax n'est plus à jour. Elle correspond à la v1 du module, alors qu'on est à la v2. Ça vaudrait coup de la reprendre si quelqu'un est partant.
Concernant la configuration du module, normalement tu n'est pas obligé de la renseigné si les valeurs par défaut te conviennent : https://github.com/PnX-SI/GeoNature/blob/master/contrib/occtax/config/conf_gn_module.toml.example
Tu saisis bien ton espèce dans le champs "Nom cité" ? La liste des taxons fonctionne bien ?
Que dit la console de ton navigateur ?
Et les logs du serveurs surtout (de l'api)
@TheoLechemia voici les dernières lignes de log. Est-ce suffisant ou je remonte encore un peu ?
fonction PL/pgsql pr_occtax.insert_in_synthese(integer), ligne 39 à instruction SQL
instruction SQL « SELECT pr_occtax.insert_in_synthese(NEW.id_counting_occtax::integer) »
fonction PL/pgsql pr_occtax.fct_tri_synthese_insert_counting(), ligne 17 à PERFORM
[SQL: INSERT INTO pr_occtax.cor_counting_occtax (unique_id_sinp_occtax, id_occurrence_occtax, id_nomenclature_life_stage, id_nomenclature_sex, id_nomenclature_obj_count, id_nomenclature_type_count, count_min, count_max) VALUES ((SELECT uuid_generate_v4() AS uuid_generate_v4_1), %(id_occurrence_occtax)s, %(id_nomenclature_life_stage)s, %(id_nomenclature_sex)s, %(id_nomenclature_obj_count)s, %(id_nomenclature_type_count)s, %(count_min)s, %(count_max)s) RETURNING pr_occtax.cor_counting_occtax.id_counting_occtax]
[parameters: {'id_occurrence_occtax': 112, 'id_nomenclature_life_stage': 1, 'id_nomenclature_sex': 171, 'id_nomenclature_obj_count': 146, 'id_nomenclature_type_count': 94, 'count_min': 1, 'count_max': 1}]
(Background on this error at: http://sqlalche.me/e/13/f405)
Oui un peu plus, on ne voit pas l'erreur là
@camillemonchicourt Je saisis bien dans le champ "Nom cité", et la liste des taxon semble bien fonctionner (saisie OK sur noms scientifiques et noms français notamment).
Dans la console, j'ai les info suivantes:
HTTP/1.1 500 INTERNAL SERVER ERROR
Date: Mon, 11 Oct 2021 10:35:13 GMT
Server: gunicorn/19.7.0
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Type: application/json
Content-Length: 36
Access-Control-Allow-Origin: https://preprod.biodiversite-bretagne.fr
Access-Control-Allow-Credentials: true
Vary: Origin
Set-Cookie: token=eyJhbGciOiJIUzI1NiIsImlhdCI6MTYzMzk0NTcwMywiZXhwIjoxNjM0NTUwNTAzfQ.eyJpZF9yb2xlIjoxLCJub21fcm9sZSI6IkFkbWluaXN0cmF0ZXVyIiwicHJlbm9tX3JvbGUiOiJ0ZXN0IiwiaWRfYXBwbGljYXRpb24iOjMsImlkX29yZ2FuaXNtZSI6LTEsImlkZW50aWZpYW50IjoiYWRtaW4iLCJpZF9kcm9pdF9tYXgiOjF9.EyD5vE_YVYl9cE7iUQo2hd5VnlQo4odfJVRLtInJcwU; Expires=Mon, 18-Oct-2021 10:35:13 GMT; Path=/
Connection: close
POST /donnees/api/occtax/releve/5/occurrence HTTP/1.1
Host: preprod.biodiversite-bretagne.fr
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0
Accept: application/json, text/plain, */*
Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Content-Type: application/json
Content-Length: 799
Origin: https://preprod.biodiversite-bretagne.fr
Connection: keep-alive
Referer: https://preprod.biodiversite-bretagne.fr/donnees/
Cookie: _pk_id.4.5d8c=c568a668c7fe9c33.1633945747.1.1633946247.1633945747.; token=eyJhbGciOiJIUzI1NiIsImlhdCI6MTYzMzk0NTcwMywiZXhwIjoxNjM0NTUwNTAzfQ.eyJpZF9yb2xlIjoxLCJub21fcm9sZSI6IkFkbWluaXN0cmF0ZXVyIiwicHJlbm9tX3JvbGUiOiJ0ZXN0IiwiaWRfYXBwbGljYXRpb24iOjMsImlkX29yZ2FuaXNtZSI6LTEsImlkZW50aWZpYW50IjoiYWRtaW4iLCJpZF9kcm9pdF9tYXgiOjF9.EyD5vE_YVYl9cE7iUQo2hd5VnlQo4odfJVRLtInJcwU; session=.eJyrVvJ3dg5xjFCyqlYqLU4tik8uKi1LTQFxnZWslIyVdJRcoLQrlA6C0qFQOgxM19bWAgAPNhKx.FEWZ6g.Ke9mfv6hmxaW6NFR1bIOzvFNgEM
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
[SQL: INSERT INTO pr_occtax.cor_counting_occtax (unique_id_sinp_occtax, id_occurrence_occtax, id_nomenclature_life_stage, id_nomenclature_sex, id_nomenclature_obj_count, id_nomenclature_type_count, count_min, count_max) VALUES ((SELECT uuid_generate_v4() AS uuid_generate_v4_1), %(id_occurrence_occtax)s, %(id_nomenclature_life_stage)s, %(id_nomenclature_sex)s, %(id_nomenclature_obj_count)s, %(id_nomenclature_type_count)s, %(count_min)s, %(count_max)s) RETURNING pr_occtax.cor_counting_occtax.id_counting_occtax]
[parameters: {'id_occurrence_occtax': 111, 'id_nomenclature_life_stage': 1, 'id_nomenclature_sex': 171, 'id_nomenclature_obj_count': 146, 'id_nomenclature_type_count': 94, 'count_min': 1, 'count_max': 1}]
(Background on this error at: http://sqlalche.me/e/13/f405)
[2021-10-11 12:35:13 +0200] [13716] [ERROR] (psycopg2.errors.UndefinedTable) ERREUR: la relation « new » n'existe pas
LINE 11: FROM NEW AS updated_rows
^
QUERY: WITH cte AS (
SELECT
gn_sensitivity.get_id_nomenclature_sensitivity(
updated_rows.date_min::date,
taxonomie.find_cdref(updated_rows.cd_nom),
updated_rows.the_geom_local,
('{"STATUT_BIO": ' || updated_rows.id_nomenclature_bio_status::text || '}')::jsonb
) AS id_nomenclature_sensitivity,
id_synthese,
t_diff.cd_nomenclature as cd_nomenclature_diffusion_level
FROM NEW AS updated_rows
LEFT JOIN ref_nomenclatures.t_nomenclatures t_diff ON t_diff.id_nomenclature = updated_rows.id_nomenclature_diffusion_level
WHERE updated_rows.id_nomenclature_sensitivity IS NULL
)
UPDATE gn_synthese.synthese AS s
SET
id_nomenclature_sensitivity = c.id_nomenclature_sensitivity,
id_nomenclature_diffusion_level = ref_nomenclatures.get_id_nomenclature(
'NIV_PRECIS',
gn_sensitivity.calculate_cd_diffusion_level(
c.cd_nomenclature_diffusion_level,
t_sensi.cd_nomenclature
)
)
FROM cte AS c
LEFT JOIN ref_nomenclatures.t_nomenclatures t_sensi ON t_sensi.id_nomenclature = c.id_nomenclature_sensitivity
WHERE c.id_synthese = s.id_synthese
CONTEXT: fonction PL/pgsql gn_synthese.fct_tri_cal_sensi_diff_level_on_each_statement(), ligne 4 à instruction SQL
instruction SQL « INSERT INTO gn_synthese.synthese (
unique_id_sinp,
unique_id_sinp_grp,
id_source,
entity_source_pk_value,
id_dataset,
id_module,
id_nomenclature_geo_object_nature,
id_nomenclature_grp_typ,
grp_method,
id_nomenclature_obs_technique,
id_nomenclature_bio_status,
id_nomenclature_bio_condition,
id_nomenclature_naturalness,
id_nomenclature_exist_proof,
id_nomenclature_life_stage,
id_nomenclature_sex,
id_nomenclature_obj_count,
id_nomenclature_type_count,
id_nomenclature_observation_status,
id_nomenclature_blurring,
id_nomenclature_source_status,
id_nomenclature_info_geo_type,
id_nomenclature_behaviour,
count_min,
count_max,
cd_nom,
cd_hab,
nom_cite,
meta_v_taxref,
sample_number_proof,
digital_proof,
non_digital_proof,
altitude_min,
altitude_max,
depth_min,
depth_max,
place_name,
precision,
the_geom_4326,
the_geom_point,
the_geom_local,
date_min,
date_max,
observers,
determiner,
id_digitiser,
id_nomenclature_determination_method,
comment_context,
comment_description,
last_action
)
VALUES(
new_count.unique_id_sinp_occtax,
releve.unique_id_sinp_grp,
id_source,
new_count.id_counting_occtax,
releve.id_dataset,
id_module,
releve.id_nomenclature_geo_object_nature,
releve.id_nomenclature_grp_typ,
releve.grp_method,
occurrence.id_nomenclature_obs_technique,
occurrence.id_nomenclature_bio_status,
occurrence.id_nomenclature_bio_condition,
occurrence.id_nomenclature_naturalness,
occurrence.id_nomenclature_exist_proof,
new_count.id_nomenclature_life_stage,
new_count.id_nomenclature_sex,
new_count.id_nomenclature_obj_count,
new_count.id_nomenclature_type_count,
occurrence.id_nomenclature_observation_status,
occurrence.id_nomenclature_blurring,
-- status_source récupéré depuis le JDD
id_nomenclature_source_status,
-- id_nomenclature_info_geo_type: type de rattachement = non saisissable: georeferencement
ref_nomenclatures.get_id_nomenclature('TYP_INF_GEO', '1'),
occurrence.id_nomenclature_behaviour,
new_count.count_min,
new_count.count_max,
occurrence.cd_nom,
releve.cd_hab,
occurrence.nom_cite,
occurrence.meta_v_taxref,
occurrence.sample_number_proof,
occurrence.digital_proof,
occurrence.non_digital_proof,
releve.altitude_min,
releve.altitude_max,
releve.depth_min,
releve.depth_max,
releve.place_name,
releve.precision,
releve.geom_4326,
ST_CENTROID(releve.geom_4326),
releve.geom_local,
date_trunc('day',releve.date_min)+COALESCE(releve.hour_min,'00:00:00'::time),
date_trunc('day',releve.date_max)+COALESCE(releve.hour_max,'00:00:00'::time),
COALESCE (myobservers.observers_name, releve.observers_txt),
occurrence.determiner,
releve.id_digitiser,
occurrence.id_nomenclature_determination_method,
releve.comment,
occurrence.comment,
'I'
) »
fonction PL/pgsql pr_occtax.insert_in_synthese(integer), ligne 39 à instruction SQL
instruction SQL « SELECT pr_occtax.insert_in_synthese(NEW.id_counting_occtax::integer) »
fonction PL/pgsql pr_occtax.fct_tri_synthese_insert_counting(), ligne 17 à PERFORM
[SQL: INSERT INTO pr_occtax.cor_counting_occtax (unique_id_sinp_occtax, id_occurrence_occtax, id_nomenclature_life_stage, id_nomenclature_sex, id_nomenclature_obj_count, id_nomenclature_type_count, count_min, count_max) VALUES ((SELECT uuid_generate_v4() AS uuid_generate_v4_1), %(id_occurrence_occtax)s, %(id_nomenclature_life_stage)s, %(id_nomenclature_sex)s, %(id_nomenclature_obj_count)s, %(id_nomenclature_type_count)s, %(count_min)s, %(count_max)s) RETURNING pr_occtax.cor_counting_occtax.id_counting_occtax]
[parameters: {'id_occurrence_occtax': 112, 'id_nomenclature_life_stage': 1, 'id_nomenclature_sex': 171, 'id_nomenclature_obj_count': 146, 'id_nomenclature_type_count': 94, 'count_min': 1, 'count_max': 1}]
(Background on this error at: http://sqlalche.me/e/13/f405)
Merci, est-ce qu'il s'agit d'une instance installée en 2.6.2 ou une instance qui a été monté de version ?
Est-ce que tu peux essayer de lancer ce bout de SQL :
DROP TRIGGER tri_insert_calculate_sensitivity on gn_synthese.synthese;
CREATE TRIGGER tri_insert_calculate_sensitivity
AFTER INSERT ON gn_synthese.synthese
REFERENCING NEW TABLE AS NEW
FOR EACH STATEMENT
EXECUTE PROCEDURE gn_synthese.fct_tri_cal_sensi_diff_level_on_each_statement();
C'est une instance qui a été montée de version.
Concernant le SQL, le DROP est passé sans problème. Le CREATE plante. Il semblerait que la version de postgres soit trop ancienne (9.6.23).
ERROR: ERREUR: erreur de syntaxe sur ou près de « REFERENCING »
LINE 3: REFERENCING NEW TABLE AS NEW
^
SQL state: 42601
Character: 89
https://docs.postgresql.fr/9.6/sql-createtrigger.html : L'instruction CREATE TRIGGER de PostgreSQL™ implante un sous-ensemble du standard SQL. Les fonctionnalités manquantes sont :
SQL permet de définir des alias pour les lignes « old » et « new » ou pour les tables utilisée dans la définition des actions déclenchées (c'est-à-dire CREATE TRIGGER ... ON nomtable REFERENCING OLD ROW AS unnom NEW ROW AS unautrenom...). PostgreSQL™ autorise l'écriture de procédures de déclencheurs dans tout langage l'utilisateur. De ce fait, l'accès aux données est géré spécifiquement pour chaque langage.
Effectivement, GeoNature necessite Postgresql 10 depuis la version 2.6.0. https://github.com/PnX-SI/GeoNature/releases/tag/2.6.0
Bonjour, J'effectue des tests relatifs au module OccTax, jusqu'à présent installé, mais non accessible au public et non utilisé sur notre plateforme régionale.
J'ai suivi la procédure décrite ici:
Au moment de créer des données d'observation, je n'ai pas de problème pour saisir un relevé. Par contre, la saisie d'un taxon me renvoit systématiquement un message d'erreur, sous la forme d'un bandeau rouge en haut du cadre "Taxons enregistrés", avec le nom du taxon saisi et le message "Erreur: cliquez pour reprendre ce taxon". Le champ "Nom cité" propose bien une liste de taxons.
Mes tables
pr_occtax.cor_counting_occtax
etpr_occtax.t_occurrences_occtax
sont vides.Version GéoNature: 2.6.2
Ai-je zappé une étape dans la configuration du module ? Est-ce que le fichier
occtax/config/conf_gn_module.toml
doit forcément remplit ? Merci pour votre aide.