Project

General

Profile

Développement #83544

plages libres, interdire d'avoir plus de deux pointages par réservation

Added by Valentin Deniaud about 1 year ago. Updated about 1 year ago.

Status:
Fermé
Priority:
Normal
Category:
-
Target version:
-
Start date:
15 November 2023
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No

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

#1

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.

#2

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 :

#3

Updated by Robot Gitea about 1 year ago

  • Status changed from En cours to Solution proposée
#4

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 :

#5

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 :

#6

Updated by Transition automatique about 1 year ago

  • Status changed from Résolu (à déployer) to Solution déployée
#7

Updated by Transition automatique 10 months ago

Automatic expiration

Also available in: Atom PDF