Projet

Général

Profil

Development #57523

interdire la réservation d'un évènement récurrent

Ajouté par Nicolas Roche il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
01 octobre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Elle est possible si on manipule les ids à la main sans passer par /datetimes/, ça ne devrait pas.


Fichiers

Révisions associées

Révision 77e8da72 (diff)
Ajouté par Valentin Deniaud il y a plus de 2 ans

api: forbid booking of recurring event (#57523)

Historique

#1

Mis à jour par Valentin Deniaud il y a plus de 2 ans

Normalement on ne peut jamais réserver un évènement récurrent parce que

agendas/models.py:
 660             # recurring events are never opened
 661             entries = self.event_set.filter(recurrence_days__isnull=True)

Où as-tu constaté un problème ? (il y en avait peut-être un pour la nouvelle API /api/agendas/datetimes/, résolu dans le premier patch de #56615)

#2

Mis à jour par Nicolas Roche il y a plus de 2 ans

J'ai constaté le problème en jouant avec l'API.
Voici comment le reproduire :
  • Je crée un événement unique.
    $ http https://chrono.dev.publik.love/api/agenda/test-evtrec3/datetimes/
    "fillslot_url": "https://chrono.dev.publik.love/api/agenda/test-evtrec3/fillslot/test/",
    
  • Je le change en événement récurent (avec une date de fin de récurrence).
  • Je le réserve (ok) :
    $ curl -X POST https://chrono.dev.publik.love/api/agenda/test-evtrec3/fillslot/test/
    
  • Je réserve une récurrence :
    $ http https://chrono.dev.publik.love/api/agenda/test-evtrec3/datetimes/
    "fillslot_url": "https://chrono.dev.publik.love/api/agenda/test-evtrec3/fillslot/test--2021-10-11-0800/",
    
    $ curl -X POST https://chrono.dev.publik.love/api/agenda/test-evtrec3/fillslot/test--2021-10-11-0800/
    
  • Je peux encore réserver l'événement premier :
    $ curl -X POST https://chrono.dev.publik.love/api/agenda/test-evtrec3/fillslot/test/
    {"err":0, ...
    
#3

Mis à jour par Valentin Deniaud il y a plus de 2 ans

  • Sujet changé de api: on peut réserver un événement même si ses récurrences ont déjà des réservations. à interdire la réservation d'un évènement récurrent
  • Description mis à jour (diff)
  • Assigné à mis à Valentin Deniaud

OK, ce cas est théorique parce que les API ne sont pas utilisées à la main, les ids des évènements sont récupérés par un appel à /datetimes/ où l'évènement test-evtrec3 ne serait pas apparu à partir du moment où il aurait été récurrent.

Ça me va de blinder le truc cependant, je change le titre et la description du ticket en ce sens.

#4

Mis à jour par Valentin Deniaud il y a plus de 2 ans

#5

Mis à jour par Valentin Deniaud il y a plus de 2 ans

(ça a fait apparaître une erreur dans un test)

#6

Mis à jour par Nicolas Roche il y a plus de 2 ans

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

Mis à jour par Valentin Deniaud il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit ff0f2607b1f830c7b59796f8c6a23f4de0d69eb2
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Wed Oct 6 12:12:06 2021 +0200

    api: forbid booking of recurring event (#57523)
#8

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

Formats disponibles : Atom PDF