Projet

Général

Profil

Development #38333

API - fillslots : accepter slots sous forme de chaine de caratères

Ajouté par Emmanuel Cazenave il y a plus de 4 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
09 décembre 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

De #38208 :

Avec donc quand même l'obligation de passer par du python parce que chrono attend une liste pour slots.

Et donc pour éviter d'avoir à taper du python (que l'on essaie par ailleurs de décourager) dans l'appel webservice, accepter une string genre "['1', '4']" qui est ce que donne une liste à choix multiple passée dans une template django, genre {{form_var_event_raw|safe}}.

C'est pas fou tout ça mais ça me semble mieux que de demander de passer un paramètre en python.


Fichiers

Screenshot-2019-12-10 Backoffice de Démarches - rdv multiple.png (46,4 ko) Screenshot-2019-12-10 Backoffice de Démarches - rdv multiple.png Emmanuel Cazenave, 10 décembre 2019 10:27
0001-api-accept-slots-as-a-string-38333.patch (3,68 ko) 0001-api-accept-slots-as-a-string-38333.patch Emmanuel Cazenave, 10 décembre 2019 15:40
0001-api-accept-slots-as-a-string-38333.patch (3,03 ko) 0001-api-accept-slots-as-a-string-38333.patch Emmanuel Cazenave, 11 décembre 2019 11:49
0002-api-return-400-when-no-events-found-38333.patch (2,05 ko) 0002-api-return-400-when-no-events-found-38333.patch Emmanuel Cazenave, 11 décembre 2019 11:49
0002-api-return-400-when-no-events-found-38333.patch (2,05 ko) 0002-api-return-400-when-no-events-found-38333.patch Emmanuel Cazenave, 16 décembre 2019 15:16
0001-api-accept-slots-as-a-string-38333.patch (2,66 ko) 0001-api-accept-slots-as-a-string-38333.patch Emmanuel Cazenave, 16 décembre 2019 15:16
0002-api-return-400-when-no-events-found-38333.patch (2,08 ko) 0002-api-return-400-when-no-events-found-38333.patch Emmanuel Cazenave, 20 décembre 2019 10:44
0001-api-accept-slots-as-a-string-38333.patch (2,65 ko) 0001-api-accept-slots-as-a-string-38333.patch Emmanuel Cazenave, 20 décembre 2019 10:44
0001-api-accept-slots-as-a-string-38333.patch (2,65 ko) 0001-api-accept-slots-as-a-string-38333.patch Emmanuel Cazenave, 20 décembre 2019 11:20
0002-api-return-400-when-no-events-found-38333.patch (2,08 ko) 0002-api-return-400-when-no-events-found-38333.patch Emmanuel Cazenave, 20 décembre 2019 11:20

Demandes liées

Lié à Publik - Development #38208: Inscription à plusieurs évènements d'un même agenda d'un seul coup Fermé04 décembre 2019

Actions

Révisions associées

Révision c420dde6 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 4 ans

api: accept slots as a string (#38333)

Révision 55945299 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 4 ans

api: return 400 when no events found (#38333)

Historique

#1

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

  • Lié à Development #38208: Inscription à plusieurs évènements d'un même agenda d'un seul coup ajouté
#2

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

"['1', '4']"

mais pas ça, juste une liste d'identifiants séparés par des virgules, alors.

#3

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

(ce qui magie correspond à la valeur _display d'un champ à sélection multiple)

#4

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

Frédéric Péters a écrit :

(ce qui magie correspond à la valeur _display d'un champ à sélection multiple)

Hmmm ce que tu appelles "la valeur _display" ce serait équivalent à "{{form_var_event}}" ?

Parce que chez moi, le mécanisme m'échappe, mais {{form_var_event}} ça donne pas "id1, id1" mais "slug1, slug2" (cf capture).

Et le slug n'étant pas obligatoire sur un évènement, we have a problem.

Tout ceci n'enlevant rien au fait que ma proposition initiale est vraiment moche.

#5

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

Hmmm ce que tu appelles "la valeur _display" ce serait équivalent à "{{form_var_event}}" ?

Oui, ce qui est contenu dans la colonne _display de la table.

Parce que chez moi, le mécanisme m'échappe, mais {{form_var_event}} ça donne pas "id1, id1" mais "slug1, slug2" (cf capture).

Et en fait non, c'est libellé 1, libellé 2.

~~

Mais quand même, on ne peut pas avoir dans l'API la demande d'une chaine "['1', '2']"; et donc, de manière brute, {{form_var_event_raw|join:","}}.

#6

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

#7

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

La partie supprimée dans test_booking_api_fillslots,

-    # invalid slots format
-    resp = app.post_json('/api/agenda/%s/fillslots/' % agenda.id, params={'slots': 'foobar'}, status=400)
-    assert resp.json['err'] == 1
-    assert resp.json['reason'] == 'invalid payload'  # legacy
-    assert resp.json['err_class'] == 'invalid payload'
-    assert resp.json['err_desc'] == 'invalid payload'
-    assert len(resp.json['errors']) == 1
-    assert 'slots' in resp.json['errors']

je trouverais quand même bien d'avoir un test avec ce slots à "foobar", qui pourrait correspondre au cas où un slug d'événement inexistant est passé.

#8

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

Dans un deuxième patch, je retourne 400 si aucun évènement n'est trouvé par identifiant ou slug.

#9

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

On est désormais en Python 3 uniquement, pas besoin de six.

#12

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

unkown event idenfiers or slug

unknown event identifiers or slugs.

#14

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

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

Faut mettre à jour aussi les tests, ok après.

#15

Mis à jour par Emmanuel Cazenave il y a plus de 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 559452990c0f69f2a096cddc6c28c30915e0b611
Author: Emmanuel Cazenave <ecazenave@entrouvert.com>
Date:   Wed Dec 11 11:47:21 2019 +0100

    api: return 400 when no events found (#38333)

commit c420dde65d95a2c3d0f9beec89ada2bb16d1349a
Author: Emmanuel Cazenave <ecazenave@entrouvert.com>
Date:   Tue Dec 10 15:28:25 2019 +0100

    api: accept slots as a string (#38333)
#16

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

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

Formats disponibles : Atom PDF