Bug #17901
attributs qui ne peuvent être vides lors d'un PATCH
0%
Description
Cette erreur :
PATCH /api/users/8761237...6281736/ HTTP/1.1 Accept: application/json, */* Accept-Encoding: gzip, deflate Authorization: Basic ... Connection: keep-alive Content-Length: 109 Content-Type: application/json Host: connexion.xxx.fr User-Agent: HTTPie/0.9.8 { "address": "169 rue du chateau", "city": "fort", "country": "", "phone": "06123456789", "zipcode": "75014" } HTTP/1.1 400 BAD REQUEST Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS Connection: keep-alive Content-Language: fr Content-Length: 44 Content-Type: application/json Date: Mon, 07 Aug 2017 09:47:52 GMT Server: nginx Vary: Accept-Language, Cookie X-XRDS-Location: https://connexion.xxx.fr/idp/openid/xrds/ { "country": [ "This field may not be blank." ] }
pose problème si on veut vider le pays.
(et c'est une régression qui doit dater d'avant juin ; cf #17869)
Demandes liées
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
C'est sur un appel depuis welco ou autre chose ? (pas vraiment important pour la résolution mais bon).
Mis à jour par Thomas Noël il y a plus de 6 ans
Depuis passerelle, lors d'un appairage famille, je remonte l'adresse d'Agora et je l'envoie dans authentic.
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
- Lié à Development #17929: Permettre des kwargs pour les champs REST attribués aux types d'attributs ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
- Statut changé de Nouveau à Résolu (à déployer)
C'est identifié, c'est une modification qui date du 20 mars.
commit f7923ad031a246908c00b974482630ea075be9c9 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Mon Mar 20 14:18:37 2017 +0100 api: do not set allow_blank=True on all attribute fields (fixes #15621) diff --git a/src/authentic2/api_views.py b/src/authentic2/api_views.py index 62be607..971f61f 100644 --- a/src/authentic2/api_views.py +++ b/src/authentic2/api_views.py @@ -283,7 +283,7 @@ class BaseUserSerializer(serializers.ModelSerializer): kind = attribute_kinds.get_kind(at.kind) field_class = kind['rest_framework_field_class'] self.fields[at.name] = field_class(source='attributes.%s' % at.name, - required=at.required, allow_blank=True) + required=at.required) def check_perm(self, perm, ou): self.context['view'].check_perm(perm, ou)
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Statut changé de Résolu (à déployer) à Nouveau
Je pense que l'intention n'était pas de fermer le ticket.
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
Non effectivement, je ne vois pas bien comment j'ai fait ça.
Mis à jour par Frédéric Péters il y a plus de 6 ans
(ça se fait tout seul sur la détection d'un
contentant une référence de commit)
Mis à jour par Thomas Noël il y a plus de 6 ans
Un peu de mal à suivre les tickets liés, Benj tu as un "hack/hotfix", ou bien ?
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
Oui c'est le #17929, un peu gros pour un hotfix.
En hotfix j'ai cela qui va fonctionner dans la mesure où aucun site n'utilise d'attribut de type "date" car dans ce cas ça plante (c'est ce qui avait amener au retrait de ce paramètre dans le commit cité plus haut).
diff --git a/src/authentic2/api_views.py b/src/authentic2/api_views.py index 54d951f..25d8c9c 100644 --- a/src/authentic2/api_views.py +++ b/src/authentic2/api_views.py @@ -315,7 +315,7 @@ class BaseUserSerializer(serializers.ModelSerializer): kind = attribute_kinds.get_kind(at.kind) field_class = kind['rest_framework_field_class'] self.fields[at.name] = field_class(source='attributes.%s' % at.name, - required=at.required) + required=at.required, allow_blank=True) for key in self.fields: if key in app_settings.A2_REQUIRED_FIELDS: self.fields[key].required = True
Mis à jour par Thomas Noël il y a plus de 6 ans
- Statut changé de Nouveau à Fermé
Corrigé avec la mise à jour Authentic du 10 août.