Projet

Général

Profil

Bug #75160

Quand un bloc contient un champ optionnel de type liste à choix multiple, il n'est jamais considéré comme vide

Ajouté par Benjamin Dauvergne il y a environ un an. Mis à jour il y a 2 mois.

Statut:
Solution déployée
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
06 mars 2023
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Cf. #75062-11 (le début du commentaire, après ça parle de conservation du prefilling je vais ouvrir un autre ticket pour cela)

On a un bloc contenant une liste à choix multiple optionnel, or quand on ajoute un ligne la ligne est immédiatement parsé ce qui en général pose simplement formdata_data[block_field.id]['data'][new_row_idx] = None. Mais pas là, la ligne étant considéré comme non vide dans ce code

# class BlockSubWidget
    def _parse(self, request):
        value = {}
        empty = True

        for widget in self.get_widgets():
            widget_value = self.get_field_data(widget.field, widget)
            with self.block.visibility_context(value, self.index):
                if not widget.field.is_visible({}, formdef=None):
                    widget.clear_error()
                    continue
            value.update(widget_value)
            if widget_value.get(widget.field.id) is not None: <--- ICI
                empty = False
        if empty:
            value = None
        self.value = value

Car widget_value.get(...) pour le champ liste à choix multiple renvoie [] et pas None.

Ça casse le pré-remplissage de la nouvelle ligne ajoutée car apply_field_prefills considère que tous les champs de la nouvelle ligne ont déjà une valeur :

            has_current_value = False
            if block:
                try:
                    current_value = data[block.id]['data'][block_idx][field.id]
                    has_current_value = True
                except (IndexError, KeyError, TypeError, ValueError):
                    pass

Révisions associées

Révision a6c2ff9e (diff)
Ajouté par Frédéric Péters il y a 2 mois

misc: use None as empty checkboxes value (#75160)

Historique

#2

Mis à jour par Robot Gitea il y a 2 mois

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Frédéric Péters

Frédéric Péters (fpeters) a ouvert une pull request sur Gitea concernant cette demande :

#3

Mis à jour par Robot Gitea il y a 2 mois

  • Statut changé de En cours à Solution proposée
#4

Mis à jour par Robot Gitea il y a 2 mois

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

Lauréline Guérin (lguerin) a approuvé une pull request sur Gitea concernant cette demande :

#5

Mis à jour par Robot Gitea il y a 2 mois

  • Statut changé de Solution validée à Résolu (à déployer)

Frédéric Péters (fpeters) a mergé une pull request sur Gitea concernant cette demande :

#6

Mis à jour par Transition automatique il y a 2 mois

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF