Bug: Affichage des details de la reservation
This commit is contained in:
@@ -39,7 +39,7 @@ class AffectationForm(forms.ModelForm):
|
||||
class ContratForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Contrat
|
||||
fields = [
|
||||
fields = (
|
||||
"numero_contrat",
|
||||
"type_contrat",
|
||||
"date_debut",
|
||||
@@ -47,7 +47,7 @@ class ContratForm(forms.ModelForm):
|
||||
"salaire_mensuel",
|
||||
"statut",
|
||||
"fichier_contrat"
|
||||
]
|
||||
)
|
||||
|
||||
widgets = {
|
||||
'numero_contrat': forms.TextInput(attrs={'class': 'form-control'}),
|
||||
@@ -62,19 +62,19 @@ class ContratForm(forms.ModelForm):
|
||||
class DepartementForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Departement
|
||||
fields = ['nom']
|
||||
fields = ('nom')
|
||||
|
||||
class FormationForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Formation
|
||||
fields = [
|
||||
fields = (
|
||||
'titre',
|
||||
'organisme',
|
||||
'date_obtention',
|
||||
'date_fin',
|
||||
'description',
|
||||
'certificat'
|
||||
]
|
||||
)
|
||||
|
||||
widgets = {
|
||||
'titre': forms.TextInput(attrs={"class": "form-control"}),
|
||||
|
||||
@@ -6,7 +6,7 @@ from .models import Reservation
|
||||
class ReservationForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Reservation
|
||||
fields = ['salle', 'date_debut', 'date_fin', 'heure_debut', 'heure_fin', 'motif_reservation', 'besoin_zoom', 'besoin_ordi']
|
||||
fields = ('salle', 'date_debut', 'date_fin', 'heure_debut', 'heure_fin', 'motif_reservation', 'besoin_zoom', 'besoin_ordi')
|
||||
widgets = {
|
||||
'date_debut': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
|
||||
'date_fin': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
|
||||
|
||||
@@ -181,7 +181,8 @@ tableau_reservation_attente.on("rowClick", (row, rowData) => {
|
||||
$("employe").value=data.employe;
|
||||
$("salle").value=data.salle;
|
||||
$("statut-reservation").innerHTML=data.statut;
|
||||
$("date_evenement").value=data.date_debut;
|
||||
$("date_debut").value = data.date_debut;
|
||||
$("date_fin").value = data.date_fin;
|
||||
$("heure_debut").value=data.heure_debut;
|
||||
$("heure_fin").value=data.heure_fin;
|
||||
$("motif_reservation").value=data.motif_reservation;
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
<!-- Modal d'affichage des détails d'une reservation -->
|
||||
<<<<<<< HEAD
|
||||
{% load tags_personnaliser %}
|
||||
=======
|
||||
>>>>>>> 6026af5 (Bug : Affichages des conges)
|
||||
<div class="modal fade" id="modalDetailReservation" tabindex="-1" aria-labelledby="modalDetailReservationLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
@@ -25,8 +22,12 @@
|
||||
<input class="form-control" id="salle" readonly>
|
||||
</div>
|
||||
<div class="form-group mb-2">
|
||||
<label>Date de l'évènement :</label>
|
||||
<input type='date' class="form-control" id="date_evenement" readonly >
|
||||
<label>Date de debut :</label>
|
||||
<input type='date' class="form-control" id="date_debut" readonly >
|
||||
</div>
|
||||
<div class="form-group mb-2">
|
||||
<label>Date de fin :</label>
|
||||
<input type='date' class="form-control" id="date_fin" readonly >
|
||||
</div>
|
||||
<div class="form-group mb-2">
|
||||
<label>Heure de début :</label>
|
||||
|
||||
@@ -143,10 +143,12 @@ def liste_reservation_attente(request):
|
||||
return JsonResponse(liste_reservation, safe=False)
|
||||
|
||||
def detail_reservation(request:HttpRequest, reservation_id:int):
|
||||
|
||||
reservation = Reservation.objects.get(id=reservation_id)
|
||||
employe = reservation.employe.user
|
||||
|
||||
reservation_json = {
|
||||
|
||||
'id_reservation': reservation_id,
|
||||
'employe': f"{employe.first_name} {employe.last_name}",
|
||||
'salle': reservation.salle,
|
||||
@@ -159,7 +161,6 @@ def detail_reservation(request:HttpRequest, reservation_id:int):
|
||||
'besoin_ordinateur': reservation.besoin_ordi,
|
||||
'lien_zoom': reservation.lien_zoom or '',
|
||||
}
|
||||
|
||||
return JsonResponse(reservation_json, safe=True)
|
||||
|
||||
@login_required
|
||||
@@ -247,4 +248,4 @@ def refuser_reservation(request:HttpRequest):
|
||||
destinataires = [reservation.employe.user.email]
|
||||
)
|
||||
|
||||
return JsonResponse({"message": "Réservation refusée avec succès."})
|
||||
return JsonResponse({"message": "Réservation refusée avec succès."})
|
||||
|
||||
@@ -1,301 +0,0 @@
|
||||
from django.core.mail import send_mail
|
||||
from django.conf import settings
|
||||
|
||||
def send_notification_email(user, sujet, message):
|
||||
"""
|
||||
Fonction générique pour envoyer un email simple
|
||||
"""
|
||||
if not user.email:
|
||||
return
|
||||
send_mail(
|
||||
sujet,
|
||||
message,
|
||||
settings.DEFAULT_FROM_EMAIL,
|
||||
[user.email],
|
||||
fail_silently=False,
|
||||
)
|
||||
|
||||
def email_reservation_creee(reservation):
|
||||
user = reservation.employe.user
|
||||
message = f"""
|
||||
Bonjour {user.get_full_name()},
|
||||
|
||||
Votre réservation a été enregistrée avec succès.
|
||||
|
||||
Salle : {reservation.salle}
|
||||
Date : {reservation.date_debut}
|
||||
Heure : {reservation.heure_debut} - {reservation.heure_fin}
|
||||
Motif : {reservation.motif_reservation}
|
||||
|
||||
Merci.
|
||||
"""
|
||||
send_notification_email(user, "Confirmation de votre réservation", message)
|
||||
|
||||
def email_reservation_directeur(reservation, directeur):
|
||||
message = f"""
|
||||
Bonjour {directeur.get_full_name()},
|
||||
|
||||
Une nouvelle réservation attend votre validation.
|
||||
|
||||
Employé : {reservation.employe.user.get_full_name()}
|
||||
Salle : {reservation.salle}
|
||||
Date : Du {reservation.date_debut} au {reservation.date_fin}
|
||||
Heure : {reservation.heure_debut} - {reservation.heure_fin}
|
||||
Motif : {reservation.motif_reservation}
|
||||
|
||||
Connectez-vous à la plateforme pour valider.
|
||||
|
||||
https://support.cerfig.org/login/
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
"""
|
||||
send_notification_email(directeur, "Nouvelle réservation à valider", message)
|
||||
|
||||
def email_reservation_zoom(reservation, admin):
|
||||
message = f"""
|
||||
Bonjour {admin.get_full_name()},
|
||||
|
||||
Une demande de lien Zoom a été faite.
|
||||
|
||||
Employé : {reservation.employe.user.get_full_name()}
|
||||
Date : {reservation.date_debut} au {reservation.date_fin}
|
||||
Heure : {reservation.heure_debut} - {reservation.heure_fin}
|
||||
Motif : {reservation.motif_reservation}
|
||||
|
||||
Veuillez créer le lien Zoom.
|
||||
|
||||
https://support.cerfig.org/login/
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
"""
|
||||
send_notification_email(admin, "Création lien Zoom requise", message)
|
||||
|
||||
def email_statut_reservation(reservation):
|
||||
user = reservation.employe.user
|
||||
message = f"""
|
||||
Bonjour {user.get_full_name()},
|
||||
|
||||
Le statut de votre réservation a été mis à jour.
|
||||
|
||||
Salle : {reservation.salle}
|
||||
Date : {reservation.date_debut}
|
||||
Statut : {reservation.statut}
|
||||
|
||||
Merci de vous connecter
|
||||
|
||||
https://support.cerfig.org
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
|
||||
"""
|
||||
send_notification_email(user, "Mise à jour de votre réservation", message)
|
||||
|
||||
def email_reservation_validee(reservation):
|
||||
user = reservation.employe.user
|
||||
message = f"""
|
||||
Bonjour {user.get_full_name()},
|
||||
|
||||
Votre réservation a été VALIDÉE.
|
||||
|
||||
Salle : {reservation.salle}
|
||||
Date : {reservation.date_debut}
|
||||
|
||||
https://support.cerfig.org/login/
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
"""
|
||||
send_notification_email(user, "Réservation validée", message)
|
||||
|
||||
def email_reservation_refusee(reservation):
|
||||
user = reservation.employe.user
|
||||
message = f"""
|
||||
Bonjour {user.get_full_name()},
|
||||
|
||||
Votre réservation a été REFUSÉE.
|
||||
|
||||
Salle : {reservation.salle}
|
||||
Date : {reservation.date_debut}
|
||||
|
||||
https://support.cerfig.org/login/
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
"""
|
||||
send_notification_email(user, "Réservation refusée", message)
|
||||
|
||||
def email_contrat_cree(contrat):
|
||||
user = contrat.employe.user
|
||||
message = f"""
|
||||
Bonjour {user.get_full_name()},
|
||||
|
||||
Un nouveau contrat a été créé pour vous.
|
||||
|
||||
Date début : {contrat.date_debut}
|
||||
Date fin : {contrat.date_fin}
|
||||
|
||||
Bienvenue !
|
||||
Merci de vous connecter pour plus informations sur votre contrat
|
||||
|
||||
https://support.cerfig.org
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
"""
|
||||
|
||||
send_notification_email(user, "Nouveau contrat", message)
|
||||
|
||||
def email_statut_contrat(contrat):
|
||||
user = contrat.employe.user
|
||||
message = f"""
|
||||
Bonjour {user.get_full_name()},
|
||||
|
||||
Votre contrat a été modifier par les ressource humaine .
|
||||
veuillez vous connecter pour voir les nouvelles informations sur votre contrat
|
||||
|
||||
https://support.cerfig.org/
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
"""
|
||||
send_notification_email(user, "Mise à jour du contrat", message)
|
||||
|
||||
def email_affectation_projet(affectation):
|
||||
user = affectation.employe.user
|
||||
projet = affectation.projet
|
||||
message = f"""
|
||||
Bonjour {user.get_full_name()},
|
||||
|
||||
Votre affectation au projet a été mise à jour.
|
||||
|
||||
Projet : {projet.nom}
|
||||
Description : {projet.description}
|
||||
Date début : {projet.date_debut}
|
||||
Date fin : {projet.date_fin}
|
||||
Rôle : {affectation.role}
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
|
||||
"""
|
||||
send_notification_email(user, "Affectation projet", message)
|
||||
|
||||
def email_expiration_fichier(projet, fichier, chef_projet):
|
||||
message = f"""
|
||||
Bonjour {chef_projet.get_full_name()},
|
||||
|
||||
Un fichier est proche de son expiration.
|
||||
|
||||
Projet : {projet.nom}
|
||||
Fichier : {fichier.nom}
|
||||
Date début : {fichier.date_debut}
|
||||
Date fin : {fichier.date_fin}
|
||||
|
||||
https://support.cerfig.org/
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
|
||||
"""
|
||||
send_notification_email(chef_projet, "Fichier proche expiration", message)
|
||||
|
||||
def email_conge_cree(conge):
|
||||
user = conge.employe.user
|
||||
message = f"""
|
||||
Bonjour {user.get_full_name()},
|
||||
|
||||
Votre demande de congé a été enregistrée avec succès.
|
||||
|
||||
Type de congé : {conge.type_conge}
|
||||
Date début : {conge.date_debut}
|
||||
Date fin : {conge.date_fin}
|
||||
Motif : {conge.motif}
|
||||
|
||||
Votre demande est en attente de validation.
|
||||
|
||||
https://support.cerfig.org/
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
"""
|
||||
send_notification_email(user, "Demande de congé enregistrée", message)
|
||||
|
||||
def email_conge_responsable(conge, responsable):
|
||||
message = f"""
|
||||
Bonjour {responsable.get_full_name()},
|
||||
|
||||
Une demande de congé nécessite votre validation.
|
||||
|
||||
Employé : {conge.employe.user.get_full_name()}
|
||||
Type : {conge.type_conge}
|
||||
Date : {conge.date_debut} au {conge.date_fin}
|
||||
Motif : {conge.motif}
|
||||
|
||||
Merci de valider ou refuser.
|
||||
|
||||
https://support.cerfig.org/
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
"""
|
||||
send_notification_email(responsable, "Validation congé (Niveau 1)", message)
|
||||
|
||||
def email_conge_directeur(conge, directeur):
|
||||
message = f"""
|
||||
Bonjour {directeur.get_full_name()},
|
||||
|
||||
Une demande de congé a été validée par le responsable et attend votre validation finale.
|
||||
|
||||
Employé : {conge.employe.user.get_full_name()}
|
||||
Type : {conge.type_conge}
|
||||
Date : {conge.date_debut} au {conge.date_fin}
|
||||
|
||||
Merci de valider définitivement.
|
||||
|
||||
https://support.cerfig.org/login/
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
"""
|
||||
send_notification_email(directeur, "Validation congé (Niveau 2)", message)
|
||||
|
||||
def email_conge_valide(conge):
|
||||
user = conge.employe.user
|
||||
message = f"""
|
||||
Bonjour {user.get_full_name()},
|
||||
|
||||
Votre demande de congé a été VALIDÉE.
|
||||
|
||||
Type : {conge.type_conge}
|
||||
Date : {conge.date_debut} au {conge.date_fin}
|
||||
|
||||
Bon repos a vous
|
||||
|
||||
https://support.cerfig.org
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
"""
|
||||
send_notification_email(user, "Congé validé", message)
|
||||
|
||||
def email_conge_refuse(conge):
|
||||
user = conge.employe.user
|
||||
message = f"""
|
||||
Bonjour {user.get_full_name()},
|
||||
|
||||
Votre demande de congé a été REFUSÉE.
|
||||
|
||||
Type : {conge.type_conge}
|
||||
Date : {conge.date_debut} au {conge.date_fin}
|
||||
|
||||
Motif : {conge.motif_refus or "Non précisé"}
|
||||
|
||||
https://support.cerfig.org
|
||||
|
||||
Cordialement,
|
||||
SIRH
|
||||
"""
|
||||
send_notification_email(user, "Congé refusé", message)
|
||||
Reference in New Issue
Block a user