Projet

Général

Profil

Bug #17901

attributs qui ne peuvent être vides lors d'un PATCH

Ajouté par Thomas Noël il y a plus de 6 ans. Mis à jour il y a plus de 6 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
07 août 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:

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

Lié à Authentic 2 - Development #17929: Permettre des kwargs pour les champs REST attribués aux types d'attributsFermé08 août 2017

Actions

Historique

#1

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).

#2

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.

#3

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é
#4

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)

#5

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.

#6

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

Non effectivement, je ne vois pas bien comment j'ai fait ça.

#7

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)

#8

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 ?

#9

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
#10

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

  • Assigné à mis à Benjamin Dauvergne
#11

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.

Formats disponibles : Atom PDF