Development #38333
API - fillslots : accepter slots sous forme de chaine de caratères
0%
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
Demandes liées
Révisions associées
api: return 400 when no events found (#38333)
Historique
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é
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.
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)
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Fichier Screenshot-2019-12-10 Backoffice de Démarches - rdv multiple.png Screenshot-2019-12-10 Backoffice de Démarches - rdv multiple.png ajouté
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.
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:","}}.
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Fichier 0001-api-accept-slots-as-a-string-38333.patch 0001-api-accept-slots-as-a-string-38333.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
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é.
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Fichier 0001-api-accept-slots-as-a-string-38333.patch 0001-api-accept-slots-as-a-string-38333.patch ajouté
- Fichier 0002-api-return-400-when-no-events-found-38333.patch 0002-api-return-400-when-no-events-found-38333.patch ajouté
Dans un deuxième patch, je retourne 400 si aucun évènement n'est trouvé par identifiant ou slug.
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.
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Fichier 0001-api-accept-slots-as-a-string-38333.patch 0001-api-accept-slots-as-a-string-38333.patch ajouté
- Fichier 0002-api-return-400-when-no-events-found-38333.patch 0002-api-return-400-when-no-events-found-38333.patch ajouté
Voilà papy c'est mis au goût du jour.
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Fichier 0001-api-accept-slots-as-a-string-38333.patch 0001-api-accept-slots-as-a-string-38333.patch ajouté
- Fichier 0002-api-return-400-when-no-events-found-38333.patch 0002-api-return-400-when-no-events-found-38333.patch ajouté
Rebasé sur black et blackisé.
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.
Mis à jour par Emmanuel Cazenave il y a plus de 4 ans
- Fichier 0001-api-accept-slots-as-a-string-38333.patch 0001-api-accept-slots-as-a-string-38333.patch ajouté
- Fichier 0002-api-return-400-when-no-events-found-38333.patch 0002-api-return-400-when-no-events-found-38333.patch ajouté
- Assigné à mis à Emmanuel Cazenave
Oups, merci.
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.
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)
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
api: accept slots as a string (#38333)