Ajout de la suppression de la reservation de salle
Some checks failed
Organisation/sirh/pipeline/head There was a failure building this commit
Organisation/sirh/pipeline/pr-main There was a failure building this commit

This commit is contained in:
2026-10-07 09:42:34 +00:00
parent f061f482d9
commit 9fb079c9a7
5 changed files with 155 additions and 92 deletions

View File

@@ -125,19 +125,25 @@ Veuillez vous connecter à la plateforme pour traiter cette demande.""",
return render(request, "gestion_salle/index.html", context)
@login_required
def liste_reservation(request:HttpRequest):
"""Vue d'affichage des creneaux disponibles"""
reservations = Reservation.objects.filter(statut = "validee")
try:
employe = Employe.objects.get(user=request.user)
reservations = Reservation.objects.filter(
Q(statut="validee")
| Q(statut="en_attente", employe=employe)
)
except Employe.DoesNotExist:
reservations = Reservation.objects.filter(statut="validee")
liste_reservation = []
for reservation in reservations:
color = None
if reservation.statut == "en_attente":
color = "#ffc107"
elif reservation.statut == "validee":
color = "#198754"
else:
color = "#dc3545"
color = "#198754"
liste_reservation.append({
"guid": reservation.pk,
@@ -146,6 +152,7 @@ def liste_reservation(request:HttpRequest):
"start": reservation.heure_debut,
"end": reservation.heure_fin,
"color": color,
"statut": dict(Reservation.STATUT).get(reservation.statut),
})
return JsonResponse(liste_reservation, safe=False)
@@ -183,6 +190,7 @@ def liste_reservation_attente(request):
liste_reservation = [
{
**model_to_dict(reservation),
"id": reservation.pk,
"employe": f"{reservation.employe.user.first_name} {reservation.employe.user.last_name}",
"employe_id": reservation.employe.user.id,
"salle": dict(Reservation.TYPE_CHOICES).get(reservation.salle),
@@ -193,6 +201,49 @@ def liste_reservation_attente(request):
return JsonResponse(liste_reservation, safe=False)
@login_required
def supprimer_reservation(request: HttpRequest, reservation_id: int):
if request.method != "POST":
return JsonResponse(
{"success": False, "message": "Méthode non autorisée."},
status=405,
)
try:
employe = Employe.objects.get(user=request.user)
except Employe.DoesNotExist:
return JsonResponse(
{"success": False, "message": "Profil employé introuvable."},
status=403,
)
try:
reservation = Reservation.objects.get(
pk=reservation_id,
employe=employe,
)
except Reservation.DoesNotExist:
return JsonResponse(
{"success": False, "message": "Réservation introuvable ou accès non autorisé."},
status=404,
)
if reservation.statut != "en_attente":
return JsonResponse(
{
"success": False,
"message": "Seules les réservations en attente peuvent être supprimées.",
},
status=400,
)
reservation.delete()
return JsonResponse(
{"success": True, "message": "Votre réservation en attente a été supprimée."}
)
def detail_reservation(request:HttpRequest, reservation_id:int):
reservation = Reservation.objects.get(id=reservation_id)
employe = reservation.employe.user
@@ -209,6 +260,8 @@ def detail_reservation(request:HttpRequest, reservation_id:int):
'besoin_zoom': reservation.besoin_zoom,
'besoin_ordinateur': reservation.besoin_ordi,
'lien_zoom': reservation.lien_zoom or '',
'est_proprietaire': request.user.is_authenticated and reservation.employe.user_id == request.user.id,
'est_en_attente': reservation.statut == "en_attente",
}
return JsonResponse(reservation_json, safe=True)