Development #57523
interdire la réservation d'un évènement récurrent
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
Historique
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)
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 :
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, ...
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.
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Fichier 0001-api-forbid-booking-of-recurring-event-57523.patch 0001-api-forbid-booking-of-recurring-event-57523.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Fichier 0001-api-forbid-booking-of-recurring-event-57523.patch 0001-api-forbid-booking-of-recurring-event-57523.patch ajouté
(ça a fait apparaître une erreur dans un test)
Mis à jour par Nicolas Roche il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
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)
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
api: forbid booking of recurring event (#57523)