Ajout de la liste des contrats d'un employé
This commit is contained in:
@@ -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
|
||||
})
|
||||
Reference in New Issue
Block a user