Development #26207
crash sur une visualisation si le formulaire d'origine contient deux champs qui ont le même identifiant
0%
Description
Un formulaire wcs avec deux form_data_toto
produira sur la visualisation qui lui correspond une erreur 500 :
"relation "formdata_.........." does not exist"
Une table se retrouve déclarée dans le cube :
for field in fields: if not field.type == 'item': continue if field.anonymise is True: continue if not field.varname: continue table_name = self.hash_table_name('{formdata_table}_field_%s' % field.varname)
Un peu plus loin elle ne sera pas créée parce que marquée comme 'duplica':
for field in fields: if not field.type == 'item': continue if field.anonymise is True: continue if not field.varname: continue if field.varname in duplicated_varnames: continue ... table_name = self.hash_table_name('{formdata_table}_field_%s' % field.varname) .... self.create_labeled_table(table_name, [(i, o['label']) for i, o in options],
Fichiers
Demandes liées
Révisions associées
tox.ini: test with python3 (#26207)
ignore fields with duplicated varname (#26207)
Historique
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
- Projet changé de BiJoe à OLAP / Business Intelligence pour Publik
Mis à jour par Thomas Noël il y a plus de 5 ans
Noter que ""Un formulaire wcs avec deux form_data_toto" ne marche de toute façon pas dans w.c.s.
Avoir deux champs avec le même nom est effectivement possible mais devrait déclencher un warning dans w.c.s., et un refus lors de l'ajout ou la modification de l'identifiant d'un champ. (ticket wcs ... sans doute existant, mais je ne le retrouve pas)
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
- deux champs f1 et f2, même varname 'v', le premier est booléen le deuxième est une chaîne
- on détecte bien que f2 est un doublon de f1, on ne crée pas sa colonne
- problème: coté w.c.s. c'est le dernier champs qui gagne lors de la création des données, car il écrase la valeur du premier champ
- on se retrouve avec un wcs-olap qui essaie de charger une chaîne dans une colonne booléenne :
2019-09-30 13:14:03,546 INFO starting synchronizing w.c.s. at 'https://demarches-saint-lo.test.entrouvert.org/' with PostgreSQL at dbname=bijoe host=test.saas.entrouvert.org.clusters.entrouvert.org user=bijoe password=raVaija3Aegh0thu port=5432 2019-09-30 13:14:14,299 INFO feed formdef copie-d-acte-de-deces 2019-09-30 13:14:15,115 INFO feed formdef copie-d-acte-de-mariage 2019-09-30 13:14:15,690 WARNING no data 2019-09-30 13:14:15,772 INFO feed formdef demande-de-subvention-appel-a-projets-etudiants 2019-09-30 13:14:16,542 INFO feed formdef formulaire-de-depot-appel-a-projet 2019-09-30 13:14:16,804 INFO feed formdef saisie-du-bilan-d-un-projet-d-une-manifestation-etudiant 2019-09-30 13:14:17,457 INFO feed formdef demande-de-stage 2019-09-30 13:14:19,261 ERROR failed to synchronize with https://demarches-saint-lo.test.entrouvert.org/ Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/wcs_olap/cmd.py", line 112, in main2 feeder.feed() File "/usr/lib/python2.7/dist-packages/wcs_olap/feeder.py", line 523, in feed formdef_feeder.feed() File "/usr/lib/python2.7/dist-packages/wcs_olap/feeder.py", line 1006, in feed self.do_data() File "/usr/lib/python2.7/dist-packages/wcs_olap/feeder.py", line 846, in do_data ctx=dict(columns=', '.join(['"%s"' % column for column in self.columns[1:]]), values=', '.join(values))) File "/usr/lib/python2.7/dist-packages/wcs_olap/feeder.py", line 312, in ex self.cur.execute(sql, vars=vars) DataError: invalid input syntax for type boolean: "Foyer des jeunes travailleurs" LIGNE 1 : ...s travailleurs", "civilite": "Monsieur"}', 24, 1, 'Foyer des... ^
Il faudrait en fait complètement ignorer ces deux champs et noter une erreur de chargement dans le modèle.
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
- Fichier 0003-ignore-fields-with-duplicated-varname-26207.patch 0003-ignore-fields-with-duplicated-varname-26207.patch ajouté
- Fichier 0001-use-only-unicode-strings-26207.patch 0001-use-only-unicode-strings-26207.patch ajouté
- Fichier 0002-tox.ini-test-with-python3-26207.patch 0002-tox.ini-test-with-python3-26207.patch ajouté
- Tracker changé de Bug à Development
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
Donc au passage je supprime toutes les contraintes sur les noms de variables, tout marche (des tirets, des espaces, des accents, c'est la fête); j'en profite au passage pour construire correctement mes commandes INSERT (j'utilisais mogrify qui n'est pas une manière correcte de faire) et n'avoir que des chaînes unicode et lancer les tests en python3.
J'ai ajouté un champ warnings
aux descriptions de cube que je vais m'empresser d'afficher coté bijoe.
Mis à jour par Serghei Mihai il y a plus de 4 ans
Cool l'idée de noter les warnings dans le modèle pour pouvoir les afficher dans l'interface de bijoe.
Par contre je pense qu'on devrait internationaliser les message pour éviter des incompréhensions.
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
Serghei Mihai a écrit :
Cool l'idée de noter les warnings dans le modèle pour pouvoir les afficher dans l'interface de bijoe.
Par contre je pense qu'on devrait internationaliser les message pour éviter des incompréhensions.
Je ne suis pas dans du django là alors c'est un poil compliqué (pas de makemessage/compilemessages, pas d'emplacement implicite pour les .po, il faudrait que je reproduise le fonctionnement, ancien, de w.c.s.), mais je veux bien les mettre en français par défaut.
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
- Fichier 0003-ignore-fields-with-duplicated-varname-26207.patch 0003-ignore-fields-with-duplicated-varname-26207.patch ajouté
- Fichier 0001-use-only-unicode-strings-26207.patch 0001-use-only-unicode-strings-26207.patch ajouté
- Fichier 0002-tox.ini-test-with-python3-26207.patch 0002-tox.ini-test-with-python3-26207.patch ajouté
Avec des warnings en français.
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
- Bloqué par Development #36576: ajouter le champ "warnings" au schéma des cubes ajouté
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 32ff0b75b560f41ace64e11762fdaa928810c644 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Mon Sep 30 17:05:21 2019 +0200 ignore fields with duplicated varname (#26207) commit 0c78cf8731de35fe5582c0d45e26817a562e2a57 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Mon Sep 30 17:21:35 2019 +0200 tox.ini: test with python3 (#26207) commit 4fc741c9e0d135866b31193be336f141658c9170 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Mon Sep 30 17:04:20 2019 +0200 use only unicode strings (#26207)
Mis à jour par Frédéric Péters il y a plus de 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
use only unicode strings (#26207)