Development #60255
[API] Nouveau endpoint pour gérer l'inscription à un unique événement récurrent
0%
Description
/api/agendas/recurring-events/fillslots/ permet de gérer les réservations à tous les événements récurrents d'un ou plusieurs agendas. Lors de la réservation d'un nouveau slot, ou d'un désistement d'un slot booké, il faut indiquer tous les autres slots déjà booké pour ne pas les déréserver.
Afin de permettre la mise en oeuvre de cas d'usage basiques il est utile d'avoir un endpoint permettant de (dé)réserver un unique événement récurrent sans avoir à se soucier des autres événements récurrent de son agenda.
Pour un événement non récurrent le déroulé est le suivant :- Listing des événements d'un agenda avec : /api/agenda/<agenda_slug>/datetimes/
- La sélection d'un événement permet d'obtenir
api_fillslot_url
et l'appel de réservation de fait sur /api/agenda/<agenda_slug>/fillslot/<event_slug>/ (avec user_external_id) - La réservation permet d'obtenir
api_cancel_url
et l'appel d'annulation se faire sur /api/booking/<booking_id>/cancel/ - (La réservation permet d'obtenir
api_cancel_accept
/api_cancel_suspend
et la bascule de liste se fait respectivement sur /api/booking/<booking_id>/accept/ et /api/booking/<booking_id>/suspend/)
- Listing des événements d'un agenda avec : /api/agendas/recurring-events/?agendas=<agenda_slug>
- La sélection d'un événement permettrait d'obtenir
api_fillslot_url
- /api/agenda/<agenda_slug>/fillslot/<event_slug>/ doit sûrement permettre de fonctionner pour booker une occurrence d'un événement récurrent, en indiquant l'id de l'occurrence (<slug_event>--<date>)
- ce serait donc un autre endpoint comme /api/agenda/<agenda_slug>/recurring-fillslot/<event_slug>/
- <event_slug> serait le slug de l'événement (pas d'un slot)
- l'appel réserverait tous les datetimes ouverts sur tous les slots de l'événement récurrent
- possibilité de spécifier date_start et date_end
- user_external_id
- La réservation permet d'obtenir la liste de tous les datetimes bookés, avec pour chacun les différents url du booking cancel, accept, suspend et la liste principale/attente
- La réservation permet d'obtenir
api_cancel_url
- L'annulation doit être possible pour tous les bookings sur un événement récurrent
- ce serait potentiellement le même endpoint /api/agenda/<agenda_slug>/recurring-fillslot/<event_slug>/ avec un paramètre unbook
- <event_slug> serait le slug de l'événement (pas d'un slot)
- possibilité de spécifier date_start et date_end
- user_external_id
(L'extension de ce endpoint pour gérer la bascule entre liste principale et d'attente de tous les datetimes fera l'objet d'un autre ticket.)
Fichiers
Révisions associées
api: add action parameter to recurring fillslots endpoint (#60255)
api: add book action to recurring fillslots endpoint (#60255)
api: add unbook action to recurring fillslots endpoint (#60255)
Historique
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Assigné à mis à Valentin Deniaud
J'ai commencé à regarder et j'ai une autre idée qu'elle est mieux, je vais ajouter un paramètre obligatoire ?action à l'API /agendas/recurring-events/fillslots/
, actuellement ça fait '?action=update' et donc je vais ajouter 'book' et 'unbook' pour tes deux besoins. Ensuite on pourra ajouter 'accept', 'suspend' etc.
En fait c'est moi qui avait peur de complexifier outrageusement le code de l'API de réservation actuelle déjà suffisamment complexe, mais je me suis rendu compte que ce n'était pas si horrible, même que c'était vachement moins de code que d'avoir un deuxième endpoint, et que ça aurait ensuite été la galère à maintenir pour que les deux soient raccord.
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Fichier 0004-api-add-unbook-action-to-recurring-fillslots-endpoin.patch 0004-api-add-unbook-action-to-recurring-fillslots-endpoin.patch ajouté
- Fichier 0001-trivial-remove-invalid-choice-in-serializer-field-60.patch 0001-trivial-remove-invalid-choice-in-serializer-field-60.patch ajouté
- Fichier 0002-api-add-action-parameter-to-recurring-fillslots-endp.patch 0002-api-add-action-parameter-to-recurring-fillslots-endp.patch ajouté
- Fichier 0003-api-add-book-action-to-recurring-fillslots-endpoint-.patch 0003-api-add-book-action-to-recurring-fillslots-endpoint-.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
0001 mini correction, 0002 qui ajoute le paramètre mais ne change rien, 0003 et 0004 le boulot.
Mis à jour par Emmanuel Cazenave il y a plus de 2 ans
Dans le module il y déjà une fonction qui s'appelle get_events_from_slots, ici tu rajoutes une méthode get_events_from_slots, ça simplifierai la lecture de la renommer genre en _get_events_from_slots
, ou encore mieux un nom complètement différent, ce serait moins confusionnant à la lecture et au git grep.
Mis à jour par Emmanuel Cazenave il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
Et après zou.
Mis à jour par Valentin Deniaud il y a plus de 2 ans
Emmanuel Cazenave a écrit :
Dans le module il y déjà une fonction qui s'appelle get_events_from_slots, ici tu rajoutes une méthode get_events_from_slots, ça simplifierai la lecture de la renommer genre en
_get_events_from_slots
, ou encore mieux un nom complètement différent, ce serait moins confusionnant à la lecture et au git grep.
Bien vu ce nommage était malheureux, j'ai renommé en get_event_recurrences
.
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 6b22764afda449dcc983afdd7c724d9282277c72 Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Thu Jan 6 11:01:35 2022 +0100 api: add unbook action to recurring fillslots endpoint (#60255) commit 58ade5be61f75b06fd6b0763c41db1ee7e84425b Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Thu Jan 6 11:01:08 2022 +0100 api: add book action to recurring fillslots endpoint (#60255) commit ad019b0956e0b326b4e878e2652c9991449e4f2f Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Thu Jan 6 10:45:34 2022 +0100 api: add action parameter to recurring fillslots endpoint (#60255) commit 29413e3a35c4354499a4d20919aacbbdf0be5d72 Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Thu Jan 6 10:59:59 2022 +0100 trivial: remove invalid choice in serializer field (#60255)
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
trivial: remove invalid choice in serializer field (#60255)