corrige la validation des reservations #32

Fusionnée
vincent.adolphe a fusionné 2 révision(s) à partir de vincent.adolphe/betg:fix_resa vers master 2021-10-13 17:52:49 +02:00
2 fichiers modifiés avec 35 ajouts et 29 suppressions

Voir le fichier

@ -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

Voir le fichier

@ -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: