From d12b014b20ee8bb1f50c9b8c4d84f3e057dffa84 Mon Sep 17 00:00:00 2001 From: fatima Date: Thu, 30 Apr 2026 13:21:16 +0200 Subject: [PATCH] feature: ajout photo de profil --- SIRH/templates/SIRH/parts/menu_principal.html | 15 +++++++++ .../static/gestion_employe/js/mon_profil.js | 32 +++++++++++-------- .../templates/gestion_employe/monprofil.html | 32 +++++++++++++------ gestion_employe/views.py | 18 +++++------ 4 files changed, 64 insertions(+), 33 deletions(-) diff --git a/SIRH/templates/SIRH/parts/menu_principal.html b/SIRH/templates/SIRH/parts/menu_principal.html index b9021f3..64ee3a5 100644 --- a/SIRH/templates/SIRH/parts/menu_principal.html +++ b/SIRH/templates/SIRH/parts/menu_principal.html @@ -2,6 +2,21 @@ {% load tags_personnaliser %}
+
+ {% if user.employe.photo %} + + {% else %} + + {% endif %} +
+ {{ user.username }} +
+
+ Mon profil diff --git a/gestion_employe/static/gestion_employe/js/mon_profil.js b/gestion_employe/static/gestion_employe/js/mon_profil.js index 64c77f9..77178b4 100644 --- a/gestion_employe/static/gestion_employe/js/mon_profil.js +++ b/gestion_employe/static/gestion_employe/js/mon_profil.js @@ -16,27 +16,31 @@ const tableau_certificat = new Tabulator("#tableau-certificat", { ], ajaxURL: url_certificat, }) - const enregistrerProfil = $("enregistrerProfil"); + enregistrerProfil.addEventListener("click", (e) => { + const url = $("information-personnelles").dataset.url; const csrftoken = document.querySelector("[name='csrfmiddlewaretoken']").value; + + const formData = new FormData(); + + formData.append("nom", $("nom").value); + formData.append("prenom", $("prenom").value); + formData.append("email", $("email").value); + formData.append("telephone", $("telephone").value); + formData.append("adresse", $("adresse").value); + formData.append("sexe", $("sexe").value); + formData.append("date_naissance", $("date_naissance").value); + fetch(url, { - method: 'POST', + method: "POST", headers: { - 'Content-Type': 'application/json', - 'X-CSRFToken': csrftoken + "X-CSRFToken": csrftoken }, - body: JSON.stringify({ - "nom": $("nom").value, - "prenom": $("prenom").value, - "email": $("email").value, - "telephone": $("telephone").value, - "adresse": $("adresse").value, - "sexe": $("sexe").value, - "date_naissance": $("date_naissance").value, - }) + body: formData }) .then(response => response.json()) .then(data => alert(data.message)) -}) \ No newline at end of file + .catch(error => console.error("Erreur:", error)); +}); \ No newline at end of file diff --git a/gestion_employe/templates/gestion_employe/monprofil.html b/gestion_employe/templates/gestion_employe/monprofil.html index 410fd7f..ed42962 100644 --- a/gestion_employe/templates/gestion_employe/monprofil.html +++ b/gestion_employe/templates/gestion_employe/monprofil.html @@ -19,17 +19,14 @@ {% endfor %} {% endif %} - -{% if expiration_contrat %} - {% if contrat_nb_jours_restant %} +{% if not expiration_contrat %} +
+ Important : Les informations sur votre contrat n'ont pas été renseignées, veuillez contacter les ressources humaines. +
+{% elif contrat_nb_jours_restant %}
Important : Votre contrat de travail expire dans {{ contrat_nb_jours_restant }} jours, veuillez contacter les ressources humaines.
- {% endif %} -{% else %} -
- Important : Les informations sur votre contrat n'ont pas été renseignées, veuillez contacter les ressources humaines. -
{% endif %}
@@ -44,6 +41,13 @@
{% csrf_token %}
+
+ + {% if employe.photo %} + Fichier actuel : {{employe.photo}} + {% endif %} + +
@@ -63,12 +67,13 @@
+ +
+
-
-
@@ -167,6 +172,13 @@ {% csrf_token %}
+
+ + {% if employe.photo %} + Fichier actuel : {{employe.photo}} + {% endif %} + +
{% if employe.CV %} diff --git a/gestion_employe/views.py b/gestion_employe/views.py index e8e6374..f9ef342 100644 --- a/gestion_employe/views.py +++ b/gestion_employe/views.py @@ -176,7 +176,6 @@ def modifier_mot_passe(request): messages.success(request, "Mot de passe modifié avec succès.") return redirect("gestion_employe:mon-profil") - def modifier_employer(request): """Vue pour permettre à un utilisateur de modifier les informations d'un employé""" try: @@ -192,7 +191,8 @@ def modifier_employer(request): employe.telephone = data['telephone'] employe.adresse = data['adresse'] employe.sexe = data['sexe'] - + if request.FILES.get("photo"): + employe.photo = request.FILES["photo"] if data['date_naissance']: difference = relativedelta(timezone.now().date(), datetime.strptime(data['date_naissance'], "%Y-%m-%d").date()) if difference.years >= 18: @@ -201,18 +201,18 @@ def modifier_employer(request): return JsonResponse({"message": "Veuillez entrez une date de naissance correcte."}) employe.save() user.save() - return JsonResponse({"message": "Profil mis à jour avec succès."}) def enregistrement_document(request): - employe = Employe.objects.get(user__username=request.user) + employe = Employe.objects.get(user=request.user) if request.method == "POST": - employe.CV = request.FILES["cv"] if 'cv' in request.FILES else employe.CV - employe.diplome = request.FILES["diplome"] if 'diplome' in request.FILES else employe.diplome - employe.rib = request.FILES["rib"] if 'rib' in request.FILES else employe.rib - employe.casier_judiciaire = request.FILES["casier_judiciaire"] if 'casier_judiciaire' in request.FILES else employe.casier_judiciaire - messages.success(request, "Documents enregistrés avec succès.") + if request.FILES.get("photo"):employe.photo = request.FILES["photo"] + if "cv" in request.FILES:employe.CV = request.FILES["cv"] + if "diplome" in request.FILES: employe.diplome = request.FILES["diplome"] + if "rib" in request.FILES: employe.rib = request.FILES["rib"] + if "casier_judiciaire" in request.FILES:employe.casier_judiciaire = request.FILES["casier_judiciaire"] employe.save() + messages.success(request, "Documents enregistrés avec succès.") return redirect("gestion_employe:mon-profil")