Project

General

Profile

Development #42429

Affichage d'un message d'erreur quand deux champs ont le même varname

Added by Pierre Cros 7 months ago. Updated 2 months ago.

Status:
Solution déployée
Priority:
Normal
Target version:
-
Start date:
04 May 2020
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

C'était bien avant mais maintenant c'est autorisé d'avoir 2 champs avec le même varname.

varname-bijoe.png View (45.3 KB) Pierre Cros, 04 May 2020 10:05 AM

0001-misc-accept-duplicate-fields-with-the-same-type-4242.patch View (8.03 KB) Benjamin Dauvergne, 04 May 2020 09:42 PM

0001-misc-accept-duplicate-fields-with-the-same-type-4242.patch View (8.28 KB) Benjamin Dauvergne, 25 Sep 2020 08:12 AM

0001-misc-accept-duplicate-fields-with-the-same-type-4242.patch View (8.28 KB) Benjamin Dauvergne, 25 Sep 2020 10:41 AM

0001-misc-accept-duplicate-fields-with-the-same-type-4242.patch View (8.91 KB) Benjamin Dauvergne, 25 Sep 2020 08:40 PM

44208

Related issues

Related to w.c.s. - Bug #42468: API : la règle « premier varname arrivé, premier servi » n'est pas respectée Solution déployée 04 May 2020

Associated revisions

Revision a16fb4ee (diff)
Added by Benjamin Dauvergne 2 months ago

misc: accept duplicate fields with the same type (#42429)

History

#1 Updated by Pierre Cros 7 months ago

  • File deleted (varname-bijoe.png)

#2 Updated by Pierre Cros 7 months ago

  • File varname-bijoe.png added

#3 Updated by Pierre Cros 7 months ago

  • File deleted (varname-bijoe.png)

#4 Updated by Pierre Cros 7 months ago

44208

#5 Updated by Benjamin Dauvergne 7 months ago

Ce n'est pas vraiment autorisé, en vrai, il y a juste une sorte de contournement pour que de temps en temps ça fonctionne comme les gens espèremt que ça va fonctionner. Et ça ne marchera toujours pas dans wcs-olap sauf si les APIs change pour n'afficher qu'un champ; je reçois une valeur pour le champ "varname=x" qui existe deux fois en type bool et item, je le met dans quelle colonne de ma table des statistiques ?

#6 Updated by Frédéric Péters 7 months ago

Ce n'est pas vraiment autorisé,

C'est totalement autorisé et le comportement est désormais défini : en cas de plusieurs champs portant la même variable, c'est le premier rempli, par ordre d'apparition dans le formulaire, qui vaut.

Alors oui il reste que ça n'a sans doute que peu de sens d'utiliser le même identifiant pour des champs sans rapport / de types différents, et très bien que ces cas soient toujours exposés en erreur, mais ce n'est pas le cas exposé ici.

#7 Updated by Benjamin Dauvergne 7 months ago

  • Project changed from BiJoe to OLAP / Business Intelligence pour Publik

#8 Updated by Benjamin Dauvergne 7 months ago

Frédéric Péters a écrit :

Ce n'est pas vraiment autorisé,

C'est totalement autorisé et le comportement est désormais défini : en cas de plusieurs champs portant la même variable, c'est le premier rempli, par ordre d'apparition dans le formulaire, qui vaut.

Oui mais l'API ne fonctionne pas comme cela, wcs.formdata.get_json_dict() ne garde que la dernière valeur.

#9 Updated by Benjamin Dauvergne 7 months ago

  • Related to Bug #42468: API : la règle « premier varname arrivé, premier servi » n'est pas respectée added

#10 Updated by Benjamin Dauvergne 7 months ago

  • Assignee set to Benjamin Dauvergne

#11 Updated by Benjamin Dauvergne 7 months ago

Voilà, les tests devraient passer quand w.c.s. renverra les bonnes valeurs; ce serait bien si w.c.s. respectait la même règle au niveau du type (i.e. qu'un champ ne prenne la place d'un autre que s'il vient après, que le premier n'a pas de valeur et qu'ils sont du même type).

#12 Updated by Benjamin Dauvergne 3 months ago

Rebasé sur master, le patch fonctionne maintenant que #42468 est passé.

#14 Updated by Nicolas Roche 2 months ago

J'ai l'impression que le second champ remplace le premier,
contrairement à ce qui est mentionné :

            if field.varname in good_fields and good_fields[field.varname].type != field.type:
                # duplicate found, but type is not coherent
                add_warning('Le champ ... sera ignoré')
                del self.good_fields[field.varname]
            self.good_fields[field.varname] = field

(à la place de "del" j'aurais mis "continue")

#15 Updated by Benjamin Dauvergne 2 months ago

  • Status changed from Solution proposée to En cours

Ce n'est pas l'objet du ticket intialement mais tu as raison que le dernier champ trouvé avec un varname va cacher le premier (et ça se voit dans le schéma JSON pour bijoe où c'est le label du mauvais doublon qui est repris). Je corrige ça.

#16 Updated by Benjamin Dauvergne 2 months ago

Et je me suis auto-induit en erreur encore une fois, il faut ignorer tous les exemplaires du doublon dans ce cas, même le premier.

#17 Updated by Benjamin Dauvergne 2 months ago

Voilà, on ignore tout en cas d'incohérence sur les types.

#18 Updated by Nicolas Roche 2 months ago

Il y a un "n apostrophe" en trop dans le message : "Le champ « %s » n\' est un doublon d\'un champ de type différent,"

Du coup je me demandais si ce n'était pas trop coûteux de rajouter un test pour couvrir aussi ce cas ?

#20 Updated by Nicolas Roche 2 months ago

  • Status changed from Solution proposée to Solution validée

#21 Updated by Benjamin Dauvergne 2 months ago

  • Status changed from Solution validée to Résolu (à déployer)
commit a16fb4ee98b452d84b8a4e650c693727e984d38d
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Mon Aug 31 10:46:13 2020 +0200

    misc: accept duplicate fields with the same type (#42429)

#22 Updated by Frédéric Péters 2 months ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF