Development #16238
API: Permettre de reserver des évènements compris entre 2 dates
0%
Description
Le but est de pouvoir reserver une liste d'évènement compris entre 2 dates i.e :
POST /agenda/<agenda_id>/fillslots/ { "start_dt": "2017-06-09T08:30", "end_dt": "2017-06-09T010:30" }
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 7 ans
Nécessité à cette occasion d'étendre Event pour marquer l'Event "primaire", pour permettre à l'annulation de libérer le lot.
Mis à jour par Frédéric Péters il y a presque 7 ans
- Bloque Development #15218: Extension aux API pour pouvoir préciser un nombre de places (sur un événement) ajouté
Mis à jour par Frédéric Péters il y a presque 7 ans
- Bloque Development #15218: Extension aux API pour pouvoir préciser un nombre de places (sur un événement) supprimé
Mis à jour par Frédéric Péters il y a presque 7 ans
- Lié à Development #15218: Extension aux API pour pouvoir préciser un nombre de places (sur un événement) ajouté
Mis à jour par Frédéric Péters il y a presque 7 ans
Nécessité à cette occasion d'étendre Event pour marquer l'Event "primaire", pour permettre à l'annulation de libérer le lot.
Il fallait bien sûr lire "Booking" et pas "Event" ici; et j'ai finalement fait le taf dans #15218.
Mis à jour par Thomas Noël il y a environ 6 ans
- Lié à Development #19740: Prise de Rendez-vous sur dates glissantes ajouté
Mis à jour par Thomas Noël il y a environ 6 ans
- Statut changé de Nouveau à En cours
Draft actuel (zéro tests).
Le endpoint est /api/agenda/<agenda_id>/fillslots/, on y envoie une liste de datetimes, venant d'une liste à choix multiple w.c.s. (l'appel webservice enverra =form_var_xxx_raw
), cette liste étant alimentée via une source de donnée sur l'api api-agenda-meeting-datetimes
On "fait confiance au front" et on accepte la liste telle quelle, sans vérifier que c'est bien liste contiguë.
Remarques sur ce principe bienvenues pendant mon repas.
Mis à jour par Thomas Noël il y a environ 6 ans
- Fichier 0001-api-handle-multiple-slots-booking-16238.patch 0001-api-handle-multiple-slots-booking-16238.patch ajouté
- Patch proposed changé de Non à Oui
Mis à jour par Frédéric Péters il y a environ 6 ans
Sur le principe ok mais
- le endpoint doit aussi gérer les agendas de type événement,
- ça se lit quand même comme un gros besoin de factoriser les choses, je trouve (le fillslot devant devenir un appel à fillslots(events=[event]))
slots = request.data.get('slots') if not slots: return Response({'err': 1, 'reason': 'missing slots'}) if not isinstance(slots, list): return Response({'err': 1, 'reason': 'slots must be a list'})
Idéalement j'aimerais qu'on arrête ça et qu'on puisse avoir django-rest-framework assurer cette partie.
On n'est quand même pas trop loin de pouvoir gérer la réservation des slots dans le même guichet, il me semble qu'il suffirait de available_desks = set(Desk.objects.filter(id=available_desk_id)) et prendre l'intersection et à la fin voir s'il reste quelque chose. (et si c'est aussi simple, autant l'avoir dès maintenant).
Mis à jour par Thomas Noël il y a environ 6 ans
Frédéric Péters a écrit :
Sur le principe ok mais
- le endpoint doit aussi gérer les agendas de type événement,
Un poil de mal à voir l'usage, mais ok.
- ça se lit quand même comme un gros besoin de factoriser les choses, je trouve (le fillslot devant devenir un appel à fillslots(events=[event]))
Mouais, j'avais commencé et ça faisait un peu le bronx partout, mais ok pour revoir donc la gestion de fillslot comme un cas particulier.
Idéalement j'aimerais qu'on arrête ça et qu'on puisse avoir django-rest-framework assurer cette partie.
#22979 à relire d'abord, donc
On n'est quand même pas trop loin de pouvoir gérer la réservation des slots dans le même guichet, il me semble qu'il suffirait de available_desks = set(Desk.objects.filter(id=available_desk_id)) et prendre l'intersection et à la fin voir s'il reste quelque chose. (et si c'est aussi simple, autant l'avoir dès maintenant).
J'ai pas bien pigé, mon patch gère bien la résa de x slots sur le même guichet (enfin disons qu'il "gérait", je le refais completely)
Mis à jour par Frédéric Péters il y a environ 6 ans
J'ai pas bien pigé, mon patch gère bien la résa de x slots sur le même guichet (enfin disons qu'il "gérait", je le refais completely)
Ok j'ai du mal lire cette partie, peut-être je me suis fait avoir available_desk = Desk.objects.filter(id=available_desk_id)[0]
qui m'a fait penser qu'on piochait dans une liste de guichet (alors que non, id=available_desk_id ça donnera jamais qu'un unique guichet (et donc plutôt .get(...), je trouve).
Mis à jour par Thomas Noël il y a environ 6 ans
- Fichier 0001-api-add-endpoint-to-fill-a-list-of-slots-16238.patch 0001-api-add-endpoint-to-fill-a-list-of-slots-16238.patch ajouté
Voici une version où Fillslot devient un cas particulier de Fillslots.
C'est toujours un draft. Les tests existants sur Fillslot passent. Je m'attaque aux tests sur Fillslots.
Mis à jour par Thomas Noël il y a environ 6 ans
- Fichier 0001-api-add-endpoint-to-fill-a-list-of-slots-16238.patch 0001-api-add-endpoint-to-fill-a-list-of-slots-16238.patch ajouté
- Patch proposed changé de Non à Oui
Voilà, avec des tests qui jouent les cas que j'ai réussi à imaginer, plaisir du relecteur que d'en trouver d'autres.
Mis à jour par Thomas Noël il y a environ 6 ans
- Fichier 0001-api-add-endpoint-to-fill-a-list-of-slots-16238.patch 0001-api-add-endpoint-to-fill-a-list-of-slots-16238.patch ajouté
Manquait un test sur 'all slots must have the same meeting type', ajouté ici, 100% de coverage, voili voilà
Mis à jour par Frédéric Péters il y a environ 6 ans
- Lié à Development #23230: widget checkboxes-meetings.html ajouté
Mis à jour par Thomas Noël il y a presque 6 ans
- Fichier 0001-api-add-endpoint-to-fill-a-list-of-slots-16238.patch 0001-api-add-endpoint-to-fill-a-list-of-slots-16238.patch ajouté
Rebasé après #23678
Mis à jour par Thomas Noël il y a presque 6 ans
- Fichier 0001-api-add-endpoint-to-fill-a-list-of-slots-16238.patch 0001-api-add-endpoint-to-fill-a-list-of-slots-16238.patch ajouté
Et un test ne passait plus (u'Nan' → Nan), corrigé ici.
Mis à jour par Thomas Noël il y a presque 6 ans
- Statut changé de En cours à Résolu (à déployer)
commit ae54f6960f36d369d9e8e757982abec168334a02 Author: Thomas NOEL <tnoel@entrouvert.com> Date: Wed Apr 4 19:54:34 2018 +0200 api: add endpoint to fill a list of slots (#16238)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
api: add endpoint to fill a list of slots (#16238)