Projet

Général

Profil

Development #26207

crash sur une visualisation si le formulaire d'origine contient deux champs qui ont le même identifiant

Ajouté par Emmanuel Cazenave il y a plus de 5 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
07 septembre 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Bloqué par BiJoe - Development #36576: ajouter le champ "warnings" au schéma des cubesFermé01 octobre 2019

Actions

Révisions associées

Révision 4fc741c9 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 4 ans

use only unicode strings (#26207)

Révision 0c78cf87 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 4 ans

tox.ini: test with python3 (#26207)

Révision 32ff0b75 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 4 ans

ignore fields with duplicated varname (#26207)

Historique

#1

Mis à jour par Emmanuel Cazenave il y a plus de 5 ans

  • Projet changé de BiJoe à OLAP / Business Intelligence pour Publik
#3

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)

#5

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

C'est en partie déjà corrigé par #30395, mais nouveau problème :
  • 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.

#6

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

  • Assigné à mis à Benjamin Dauvergne
#8

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.

#9

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.

#10

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.

#12

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é
#13

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

  • Statut changé de Solution proposée à Solution validée
#14

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)
#15

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

Formats disponibles : Atom PDF