Ajout de la liste des contrats d'un employé
All checks were successful
Organisation/sirh/pipeline/head This commit looks good
Organisation/sirh/pipeline/pr-main This commit looks good

This commit is contained in:
2026-10-08 12:39:38 +00:00
parent 0abbb26149
commit f45ff7793d
6 changed files with 126 additions and 84 deletions

View File

@@ -1,9 +1,8 @@
import json
from datetime import datetime, timedelta
import requests
from dateutil.relativedelta import relativedelta
from decouple import config
from django.contrib.auth import update_session_auth_hash
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
@@ -300,6 +299,8 @@ def creation_contrat(request):
@login_required
def contrats_employe(request, employe_id):
if not request.user.groups.filter(name="ressource_humaine").exists():
return JsonResponse({"error": "Accès non autorisé"}, status=403)
try:
employe = Employe.objects.get(id=employe_id)
@@ -506,42 +507,55 @@ def supprimer_formation(request, id_formation):
def modifier_mot_passe(request):
"""Vue pour permettre à un employé de modifier son mot de passe"""
if request.method == "POST":
username = request.user.username
ancien_mdp = request.POST.get("ancien-mdp")
nouveau_mdp = request.POST.get("nouveau-mdp")
confirmation_mdp = request.POST.get("confirmation-mdp")
if not request.user.check_password(ancien_mdp):
messages.error(request, "L'ancien mot de passe est incorrect.")
return redirect("gestion_employe:mon-profil")
if nouveau_mdp != confirmation_mdp:
messages.error(request, "Les nouveaux mots de passe ne correspondent pas.")
return redirect("gestion_employe:mon-profil")
try:
validate_password(nouveau_mdp, user=request.user)
except ValidationError as e:
messages.error(request, f"Erreur : {' '.join(e.messages)}")
return redirect("gestion_employe:mon-profil")
donnees = {
"username": username,
"ancien_mdp": ancien_mdp,
"nouveau_mdp": nouveau_mdp,
"confirmation_mdp": confirmation_mdp
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
}
response = requests.post(
f"{config('SERVEUR_AUTHENTIFICATION')}modifier-mot-de-passe/",
json=donnees,
headers=headers
)
data = response.json()
cle = next(iter(data.keys()))
valeur = next(iter(data.values()))
if cle == "success":
messages.success(request, valeur)
else:
messages.error(request, valeur)
request.user.set_password(nouveau_mdp)
request.user.save(update_fields=["password"])
update_session_auth_hash(request, request.user)
messages.success(request, "Mot de passe modifié avec succès.")
return redirect("gestion_employe:mon-profil")
def liste_contrats_employe(request, id_employe):
"""Vue pour retourner la liste des contrats d'un employé spécifique"""
try:
employe = Employe.objects.get(id=id_employe)
except Employe.DoesNotExist:
return JsonResponse({"error": "Employé non trouvé"}, status=404)
contrats = Contrat.objects.filter(employe=employe).order_by("-date_debut")
data = [
{
"id": contrat.id,
"numero_contrat": contrat.numero_contrat,
"type_contrat": dict(Contrat.TYPE_CONTRAT).get(contrat.type_contrat),
"date_debut": contrat.date_debut.strftime("%Y-%m-%d"),
"date_fin": contrat.date_fin.strftime("%Y-%m-%d") if contrat.date_fin else "",
"salaire_mensuel": contrat.salaire_mensuel,
"statut": dict(Contrat.STATUT_CONTRAT).get(contrat.statut),
"fichier_contrat": contrat.fichier_contrat.url if contrat.fichier_contrat else "",
}
for contrat in contrats
]
return JsonResponse({
"employe": f"{employe.user.first_name} {employe.user.last_name}",
"contrats": data
})