Verification du statut avant la creation d'un contrat

This commit is contained in:
2026-04-30 13:28:57 +02:00
committed by Soriba SYLLA
parent 117bbe255b
commit 16b4489088
271 changed files with 43797 additions and 294 deletions

View File

@@ -8,95 +8,6 @@ from django.forms import model_to_dict
from gestion_employe.models import Employe
from gestion_salle.forms import ReservationForm
from .models import Reservation
<<<<<<< HEAD
from datetime import timedelta
from django.contrib.auth.models import User
@login_required
def index(request: HttpRequest):
try:
employe = Employe.objects.get(user=request.user)
except Employe.DoesNotExist:
messages.error(request, "Profil employé introuvable.")
return redirect('gestion_conges:conge')
if request.method == "POST":
form = ReservationForm(request.POST)
if form.is_valid():
date_debut = form.cleaned_data['date_debut']
date_fin = form.cleaned_data['date_fin']
salle = form.cleaned_data['salle']
heure_debut = form.cleaned_data['heure_debut']
heure_fin = form.cleaned_data['heure_fin']
motif = form.cleaned_data['motif_reservation']
besoin_zoom = form.cleaned_data['besoin_zoom']
besoin_ordi = form.cleaned_data['besoin_ordi']
if date_fin < date_debut:
messages.error(request, "Date fin invalide.")
return redirect('gestion_salle:reservation-salle')
if heure_fin <= heure_debut:
messages.error(request, "Heure invalide.")
return redirect('gestion_salle:reservation-salle')
if not request.user.first_name.strip() or not request.user.last_name.strip():
messages.error(
request,
"Veuillez renseigner votre nom et prénom pour pouvoir faire une réservation."
)
return redirect('gestion_salle:reservation-salle')
created = []
current_date = date_debut
while current_date <= date_fin:
reservation = Reservation.objects.create(
employe=employe,
date_debut=current_date,
date_fin=current_date,
salle=salle,
heure_debut=heure_debut,
heure_fin=heure_fin,
besoin_zoom=besoin_zoom,
besoin_ordi=besoin_ordi,
motif_reservation=motif,
statut="en_attente"
)
created.append(reservation)
current_date += timedelta(days=1)
messages.success(request, "Réservation(s) créée(s) avec succès.")
return redirect('gestion_salle:reservation-salle')
formulaire_reservation = ReservationForm()
departement = employe.departement
appartient_direction = request.user.groups.filter(name='direction').exists()
liste_demande_reservation = Reservation.objects.filter(
employe=employe,
statut='en_attente'
).values_list('id', flat=True)
context = {
'formulaire_reservation': formulaire_reservation,
'nb_reservation_attente': Reservation.objects.filter(statut='en_attente').count(),
'appartient_au_departement_informatique': departement and departement.nom == "Systeme informatique",
'appartient_direction': appartient_direction,
'liste_demande_reservation': list(liste_demande_reservation),
}
return render(request, "gestion_salle/index.html", context)
=======
@login_required
def index(request:HttpRequest):
@@ -154,7 +65,6 @@ def index(request:HttpRequest):
}
return render(request, "gestion_salle/index.html", context)
>>>>>>> 0047b1f (Ajout de la prise en charge des photos de profil)
def liste_reservation(request:HttpRequest):
"""Vue d'affichage des creneaux disponibles"""
reservations = Reservation.objects.filter(statut = "validee")
@@ -176,10 +86,6 @@ def liste_reservation(request:HttpRequest):
"end": reservation.heure_fin,
"color": color,
})
<<<<<<< HEAD
=======
>>>>>>> 0047b1f (Ajout de la prise en charge des photos de profil)
return JsonResponse(liste_reservation, safe=False)
@login_required
@@ -196,41 +102,24 @@ def liste_reservation_attente(request):
return JsonResponse(liste_reservation, safe=False)
def detail_reservation(request:HttpRequest, reservation_id:int):
<<<<<<< HEAD
reservation = Reservation.objects.get(id=reservation_id)
employe = reservation.employe.user
reservation_json = {
=======
reservation = Reservation.objects.get(id=reservation_id)
employe = reservation.employe.user
reservation_json = {
>>>>>>> 0047b1f (Ajout de la prise en charge des photos de profil)
'id_reservation': reservation_id,
'employe': f"{employe.first_name} {employe.last_name}",
'salle': reservation.salle,
'statut': reservation.statut,
<<<<<<< HEAD
'date_debut': reservation.date_debut.strftime('%Y-%m-%d'),
'date_fin': reservation.date_fin.strftime('%Y-%m-%d'),
=======
'date_evenement': reservation.date_debut.strftime('%Y-%m-%d'),
>>>>>>> 0047b1f (Ajout de la prise en charge des photos de profil)
'heure_debut': reservation.heure_debut.strftime('%H:%M'),
'heure_fin': reservation.heure_fin.strftime('%H:%M'),
'motif_reservation': reservation.motif_reservation,
'besoin_zoom': reservation.besoin_zoom,
'besoin_ordinateur': reservation.besoin_ordi,
'lien_zoom': reservation.lien_zoom or '',
<<<<<<< HEAD
}
=======
'motif_refus': reservation.motif_refus or '',
}
>>>>>>> 0047b1f (Ajout de la prise en charge des photos de profil)
return JsonResponse(reservation_json, safe=True)
@login_required
@@ -276,40 +165,6 @@ def annuler_reservation(request:HttpRequest):
return redirect('gestion_salle:reservation-salle')
@login_required
<<<<<<< HEAD
def valider_reservation(request: HttpRequest):
"""Validation d'une réservation"""
if request.method == 'POST':
reservation_id = request.POST.get('id_reservation')
try:
reservation = Reservation.objects.get(id=reservation_id)
except Reservation.DoesNotExist:
messages.error(request, "La réservation sélectionnée n'existe pas.")
return redirect("salle")
reservation.statut = 'validee'
reservation.save()
return redirect('gestion_salle:reservation-salle')
@login_required
def refuser_reservation(request: HttpRequest):
"""Refuser une réservation"""
if request.method == 'POST':
reservation_id = request.POST.get('id_reservation')
try:
reservation = Reservation.objects.get(id=reservation_id)
except Reservation.DoesNotExist:
messages.error(request, "La réservation n'existe pas.")
return redirect("salle")
reservation.statut = 'refusee'
reservation.save()
return redirect('gestion_salle:reservation-salle')
=======
def valider_reservation(request:HttpRequest):
"""Vue de gestion de l'annulation de la reservation"""
if request.method == 'POST':
@@ -332,10 +187,9 @@ def refuser_reservation(request:HttpRequest):
reservation_id = data.get("id_reservation")
try:
reservation = Reservation.objects.get(id=reservation_id)
except Reservation.DoesNotExist and ValueError:
except Reservation.DoesNotExist:
return JsonResponse({"message": "La resevertion selectionné n'existe pas."})
else:
reservation.statut = "refusee"
reservation.save()
return JsonResponse({"message": "Réservation refusée avec succès."})
>>>>>>> 0047b1f (Ajout de la prise en charge des photos de profil)
return JsonResponse({"message": "Réservation refusée avec succès."})