Version
GeoNature 2.16.4 / Module Monitoring 1.2.6
Description
Deux problèmes liés au widget municipalities dans un formulaire de groupe de sites.
Problème 1 : multiple: false non pris en compte
J'ai la configuration suivante dans le JSON du groupe de sites :
json"commune": {
"type_widget": "municipalities",
"attribut_label": "Renseigner les communes du site parent",
"value_field_name": "area_code",
"type_util": "area",
"multiple": false,
"required": true
}
Malgré "multiple": false, le widget permet la sélection multiple et stocke la valeur sous forme de tableau en base : ["44001"] au lieu de "44001".
Problème 2 : Erreur SQL lors du filtrage par commune
Sur la page listant les groupes de sites, le filtre par nom de commune provoque une erreur SQL car le backend tente de caster la valeur JSONB ["22145"] (tableau) en INTEGER :
sql : sqlalchemy.exc.DataError: (psycopg2.errors.InvalidTextRepresentation) ERREUR: syntaxe en entrée invalide pour le type integer : « ["22145"] »
[SQL: SELECT (SELECT count(gn_monitoring.t_site_[complements.id](http://complements.id)_sites_group/) AS count_1
FROM gn_monitoring.t_base_sites JOIN gn_monitoring.t_site_complements ON gn_monitoring.t_base_[sites.id](http://sites.id)_base_site/ = gn_monitoring.t_site_[complements.id](http://complements.id)_base_site/
WHERE gn_monitoring.t_site_[complements.id](http://complements.id)_sites_group/ = gn_monitoring.t_sites_[groups.id](http://groups.id)_sites_group/) AS anon_1, (SELECT ST_AsGeoJSON(ST_ConvexHull(ST_Collect(gn_monitoring.t_base_sites.geom))) AS "ST_AsGeoJSON_1"
FROM gn_monitoring.t_base_sites JOIN gn_monitoring.t_site_complements ON gn_monitoring.t_base_[sites.id](http://sites.id)_base_site/ = gn_monitoring.t_site_[complements.id](http://complements.id)_base_site/
WHERE gn_monitoring.t_site_[complements.id](http://complements.id)_sites_group/ = gn_monitoring.t_sites_[groups.id](http://groups.id)_sites_group/) AS anon_2, gn_monitoring.t_sites_[groups.id](http://groups.id)_sites_group/, gn_monitoring.t_sites_[groups.id](http://groups.id)_digitiser/, gn_monitoring.t_sites_groups.uuid_sites_group, gn_monitoring.t_sites_groups.sites_group_name, gn_monitoring.t_sites_groups.sites_group_code, gn_monitoring.t_sites_groups.sites_group_description, gn_monitoring.t_sites_groups.comments, ST_AsEWKB(gn_monitoring.t_sites_groups.geom) AS geom, gn_monitoring.t_sites_[groups.data](http://groups.data/), gn_monitoring.t_sites_groups.altitude_min, gn_monitoring.t_sites_groups.altitude_max
FROM gn_monitoring.t_sites_groups JOIN ref_geo.l_areas AS l_areas_1 ON CAST((gn_monitoring.t_sites_[groups.data](http://groups.data/) ->> %(data_1)s) AS INTEGER) = l_areas_[1.id](http://1.id)_area/
WHERE (EXISTS (SELECT 1
FROM gn_monitoring.cor_sites_group_module, gn_commons.t_modules JOIN gn_monitoring.t_module_complements ON gn_commons.t_[modules.id](http://modules.id)_module/ = gn_monitoring.t_module_[complements.id](http://complements.id)_module/
WHERE gn_monitoring.t_sites_[groups.id](http://groups.id)_sites_group/ = gn_monitoring.cor_sites_group_[module.id](http://module.id)_sites_group/ AND gn_commons.t_[modules.id](http://modules.id)_module/ = gn_monitoring.cor_sites_group_[module.id](http://module.id)_module/ AND gn_commons.t_modules.module_code = %(module_code_1)s)) AND true AND l_areas_1.area_name ILIKE %(area_name_1)s
LIMIT %(param_1)s OFFSET %(param_2)s]
[parameters: {'data_1': 'commune', 'module_code_1': 'comptagechiros22', 'area_name_1': 'Dinan%', 'param_1': 10, 'param_2': 0}]
(Background on this error at: https://sqlalche.me/e/14/9h9h)
Version
GeoNature 2.16.4 / Module Monitoring 1.2.6
Description
Deux problèmes liés au widget municipalities dans un formulaire de groupe de sites.
Problème 1 : multiple: false non pris en compte
J'ai la configuration suivante dans le JSON du groupe de sites :
Malgré
"multiple": false,le widget permet la sélection multiple et stocke la valeur sous forme de tableau en base : ["44001"] au lieu de "44001".Problème 2 : Erreur SQL lors du filtrage par commune
Sur la page listant les groupes de sites, le filtre par nom de commune provoque une erreur SQL car le backend tente de caster la valeur JSONB ["22145"] (tableau) en INTEGER :