corrige la validation des reservations #32
|
@ -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 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
|
||||
)
|
||||
)
|
||||
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
|
||||
|
|
|
@ -298,19 +298,23 @@ class ReservationProcess(ReservationActionMixin, UserPassesTestMixin):
|
|||
# .save() trigger .errors that trigger form.clean()
|
||||
# and model.full_clean()
|
||||
# form.clean() and model.full_clean() can raise
|
||||
# django..ValidationError
|
||||
# django.ValidationError
|
||||
# but when trigger by .save()/.error it raise a ValueError instead
|
||||
# https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/
|
||||
# #the-save-method
|
||||
except:
|
||||
logger.error("user[%s]" % (self.request.user))
|
||||
logger.error("POST[%s]" % (self.request.POST))
|
||||
logger.exception("form.errors = %s", form.errors.as_data())
|
||||
logger.error(
|
||||
"user[%s] POST[%s]" % (self.request.user, self.request.POST)
|
||||
)
|
||||
messages.error(
|
||||
self.request,
|
||||
(
|
||||
"Impossible de traiter la réservation {0}, une erreur "
|
||||
"inattendue s'est produite.".format(self.reservation.pk)
|
||||
"Impossible de traiter la réservation {0}: "
|
||||
"{1}".format(
|
||||
str(self.reservation),
|
||||
', '.join(form.errors.get('__all__', [])),
|
||||
)
|
||||
),
|
||||
)
|
||||
else:
|
||||
|
|
Chargement…
Référencer dans un nouveau ticket