Projet

Général

Profil

Development #16238

API: Permettre de reserver des évènements compris entre 2 dates

Ajouté par Josué Kouka il y a presque 7 ans. Mis à jour il y a plus de 5 ans.

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

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Lié à Chrono - Development #15218: Extension aux API pour pouvoir préciser un nombre de places (sur un événement)Fermé03 mars 2017

Actions
Lié à Publik - Development #19740: Prise de Rendez-vous sur dates glissantesFermé29 octobre 2017

Actions
Lié à Intégrations graphiques Publik - Development #23230: widget checkboxes-meetings.htmlRejeté17 avril 2018

Actions

Révisions associées

Révision ae54f696 (diff)
Ajouté par Thomas Noël il y a presque 6 ans

api: add endpoint to fill a list of slots (#16238)

Historique

#1

Mis à jour par Josué Kouka il y a presque 7 ans

  • Description mis à jour (diff)
#2

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.

#3

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

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

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

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.

#7

Mis à jour par Thomas Noël il y a environ 6 ans

#8

Mis à jour par Thomas Noël il y a environ 6 ans

  • Assigné à changé de Josué Kouka à Thomas Noël
#9

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.

#11

Mis à jour par Thomas Noël il y a environ 6 ans

  • Patch proposed changé de Oui à Non
#12

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

#13

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)

#14

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

#15

Mis à jour par Thomas Noël il y a environ 6 ans

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.

#16

Mis à jour par Thomas Noël il y a environ 6 ans

Voilà, avec des tests qui jouent les cas que j'ai réussi à imaginer, plaisir du relecteur que d'en trouver d'autres.

#17

Mis à jour par Thomas Noël il y a environ 6 ans

Manquait un test sur 'all slots must have the same meeting type', ajouté ici, 100% de coverage, voili voilà

#18

Mis à jour par Frédéric Péters il y a environ 6 ans

#20

Mis à jour par Thomas Noël il y a presque 6 ans

Et un test ne passait plus (u'Nan' → Nan), corrigé ici.

#21

Mis à jour par Josué Kouka il y a presque 6 ans

ok pour moi.

#22

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)

#23

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

Formats disponibles : Atom PDF