Bug #26113
API: les attributs booléens optionnels casse l'API des utilisateurs
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
Historique
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.
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Fichier 0001-api-fix-case-of-boolean-user-s-attributs-fixes-26113.patch 0001-api-fix-case-of-boolean-user-s-attributs-fixes-26113.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
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
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.
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
Appliqué par commit authentic2|e1d73640b9441f974b62d93edc647f38ca78f241.
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé
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.