Projet

Général

Profil

Bug #26113

API: les attributs booléens optionnels casse l'API des utilisateurs

Ajouté par Benjamin Dauvergne il y a plus de 5 ans. Mis à jour il y a plus de 5 ans.

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

100%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Sur #26075, ça vient de ce commit :

commit 620d514ceaf762f1217575edebac9770bb73d26d
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Fri Aug 10 14:25:03 2018 +0200

    api: expose boolean user attributes as booleans (#25632)

NullBooleanField interagit mal avec ce bout de code de l'API:

340                 if not at.required:
341                     # setting an attribute to null will delete it
342                     kwargs['allow_null'] = True
343                     # if not stated otherwise by the definition of the kind, string alike fields
344                     # accept blank values when not required
345                     if (issubclass(field_class, serializers.CharField) and 'allow_blank' not in
346                             kwargs):
347                         kwargs['allow_blank'] = True

Fichiers

Révisions associées

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

api: fix case of boolean user's attributs (fixes #26113)

As NullBooleanField does not support the allow_null init attribute, we
must special case it and remember to never use BooleanField.

Historique

#2

Mis à jour par Frédéric Péters il y a plus de 5 ans

Par rapport au patch attaché à #26075,

if field_class is serializers.BooleanField:

Même si ça ne va pas arriver là tout de suite, je serais pour ... in (serializers.BooleanField, serializers.NullBooleanField):, histoire de ne pas se retrouver un jour avec un NullBooleanField qui se trouverait emprunter la voie du allow_null.

#3

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

Voilà, mais il me semblait prendre déjà en compte le cas NullBooleanField ici:


                    if field_class is serializers.BooleanField:
                        field_class = serializers.NullBooleanField
                    elif field_class is not serializers.NullBooleanField:
                        kwargs['allow_null'] = True
#4

Mis à jour par Frédéric Péters il y a plus de 5 ans

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

Je l'avais zappé, désolé, pour moi c'est bon ainsi.

#5

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

  • Statut changé de Solution validée à Résolu (à déployer)
  • % réalisé changé de 0 à 100
#6

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

  • Tracker changé de Support à Bug
#7

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

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF