Browse Source

fix(models.Reservation.clean): le clean() concerne les nouvelles reservations

master
Vincent Adolphe 10 months ago
parent
commit
24ad43e0c5
  1. 50
      betg/apps/evenements/models.py

50
betg/apps/evenements/models.py

@ -615,32 +615,34 @@ class Reservation(AccessHistoryMixin): @@ -615,32 +615,34 @@ class Reservation(AccessHistoryMixin):
)
def clean(self):
if self.id is None: # en cas de nouvelle reservation
# valide automatiquement la réservation pour un responsable
if self.personne.a_la_fonction(Fonction.RESPONSABLE):
self.statut = Reservation.Statut.ACCEPTE
# il ne doit pas y avoir de reservation pour la meme
# personne durant la meme semaine (1 BETG par semaine)
rms = (
self.personne.reservations.a_venir()
.reservees()
.filter(evenement__ordweek=self.evenement.ordweek)
.exists()
)
if rms:
raise ValidationError(
"L'événement « {0} » n'est pas réservable, vous avez "
"déjà une réservation pour cette semaine".format(
self.evenement.nom
)
if self.id is not None: # en cas de reservation existante
return
# en cas de nouvelle reservation
# valide automatiquement la réservation pour un responsable
if self.personne.a_la_fonction(Fonction.RESPONSABLE):
self.statut = Reservation.Statut.ACCEPTE
# il ne doit pas y avoir de reservation pour la meme
# personne durant la meme semaine (1 BETG par semaine)
rms = (
self.personne.reservations.a_venir()
.reservees()
.filter(evenement__ordweek=self.evenement.ordweek)
.exists()
)
if rms:
raise ValidationError(
"L'événement « {0} » n'est pas réservable, vous avez "
"déjà une réservation pour cette semaine".format(
self.evenement.nom
)
# est ce que l'evenement est reservable ?
if not self.evenement.est_reservable:
raise ValidationError(
"L'événement « {0} » n'est plus ou pas encore réservable".format(
self.evenement.nom
)
)
# est ce que l'evenement est reservable ?
if not self.evenement.est_reservable:
raise ValidationError(
"L'événement « {0} » n'est plus ou pas encore réservable".format(
self.evenement.nom
)
)
# si la personne n'est pas un responsable, il faut
# laisser TPS_REFLEXION + VAL_AUTO_NB_J_AV_EVT entre
# la date de la reservation et celle de l'evenement

Loading…
Cancel
Save
Map all the world