Développement #83544
plages libres, interdire d'avoir plus de deux pointages par réservation
0%
Description
Actuellement, l'interface interdit d'ajouter plus de deux pointages.
Mais un pointage pourra également être créé via l'API. Une race condition conduisant à avoir trois pointages est très peu probable, mais puisque la conséquence serait un plantage de la plupart des vues, nécessitant une intervention manuelle en db, cette possibilité doit être réfléchie.
Il faudrait envisager une contrainte au niveau de la base de données.
Actuellement le modèle pointage BookingCheck a une clé secondaire vers le modèle réservation Booking, ce qui permet à un Booking d'avoir N BookingCheck.
J'avais lors de l'implem initiale essayé d'avoir Booking qui contient deux OneToOneField vers BookingCheck, mais ça se mariait fort mal avec l'ORM.
Deuxième solution, avoir une colonne en plus de BookingCheck, par exemple un booléen first
, puis la contrainte d'unicité (booking, first), ainsi pour un même Booking on ne pourra avoir que BookingCheck(booking, first=True) et BookingCheck(booking, first=False).
Ça introduit une distinction forte entre premier et deuxième pointage qui n'existe pas actuellement, je ne sais pas si ce sera utile ou pas.
Troisième solution, maintenir un compteur des pointages liés à une réservation avec un trigger, et refuser la création quand ça dépasse 2 ?
History
Updated by Valentin Deniaud about 1 year ago
Valentin Deniaud a écrit :
Deuxième solution, avoir une colonne en plus de BookingCheck, par exemple un booléen
first
, puis la contrainte d'unicité (booking, first), ainsi pour un même Booking on ne pourra avoir que BookingCheck(booking, first=True) et BookingCheck(booking, first=False).
J'ai vu la lumière ce booléen existe déjà, c'est le booléen qui indique la présence, donc ce ticket c'est juste le pendant db de #83505.
Updated by Robot Gitea about 1 year ago
- Status changed from Nouveau to En cours
Valentin Deniaud (vdeniaud) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/chrono/pulls/181
- Titre : WIP: agendas: forbid having more than two checks on booking (#83544)
- Modifications : https://git.entrouvert.org/entrouvert/chrono/pulls/181/files
Updated by Robot Gitea about 1 year ago
- Status changed from Solution proposée to Solution validée
Lauréline Guérin (lguerin) a approuvé une pull request sur Gitea concernant cette demande :
Updated by Robot Gitea about 1 year ago
- Status changed from Solution validée to Résolu (à déployer)
Valentin Deniaud (vdeniaud) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/chrono/pulls/181
- Titre : agendas: forbid having more than two checks on booking (#83544)
- Modifications : https://git.entrouvert.org/entrouvert/chrono/pulls/181/files
Updated by Transition automatique about 1 year ago
- Status changed from Résolu (à déployer) to Solution déployée