feature: Affichage de la lite des conges en fonction des profil

This commit is contained in:
2026-04-30 15:10:40 +02:00
parent 741519c341
commit cea67c7057

View File

@@ -129,50 +129,53 @@ def demander_conge(request):
@login_required @login_required
def liste_demande_conges(request): def liste_demande_conges(request):
"""Vue de liste des demandes de congés en attente de validation selon le statut de l'utilisateur actuel"""
try: try:
employe = Employe.objects.get(user__username = request.user) employe = Employe.objects.get(user=request.user)
except Employe.DoesNotExist: except Employe.DoesNotExist:
return JsonResponse({ return JsonResponse({
"success": False, "success": False,
"message": "Votre profil Utilisateur n'est lié à aucun profil Employé. Veuillez contacter l'administrateur." "message": "Profil employé introuvable"
}) })
try: affectation = Affectation.objects.filter(
affectation = Affectation.objects.get(
employe=employe, employe=employe,
date_fin_daffectation__gte=timezone.now().date() date_fin_daffectation__gte=timezone.now().date()
) ).first()
except Affectation.DoesNotExist:
affectation = None is_direction = employe.user.groups.filter(name='direction').exists()
if employe.chef: if employe.chef:
print("chef")
conges_en_attente = Conge.objects.filter( conges = Conge.objects.filter(
employe__departement = employe.departement, Q(employe__departement=employe.departement) |
validation_hierarchique = None Q(employe=employe)
).order_by('-date_demande') ).order_by('-date_demande')
elif affectation and affectation.role == "chef_projet": elif affectation and affectation.role == "chef_projet":
employes_du_projet = Affectation.objects.filter( employes_du_projet = Affectation.objects.filter(
projet=affectation.projet, projet=affectation.projet,
date_fin_daffectation__gte=timezone.now().date() date_fin_daffectation__gte=timezone.now().date()
).values('employe') ).values_list('employe', flat=True)
conges_en_attente = Conge.objects.filter( conges = Conge.objects.filter(
employe__in = employes_du_projet, Q(employe__in=employes_du_projet) |
validation_hierarchique = None Q(employe=employe)
).order_by('-date_demande') ).order_by('-date_demande')
elif 'direction' in employe.user.groups.values_list('name', flat=True):
conges_en_attente = Conge.objects.filter( elif is_direction:
validation_hierarchique = True,
validation_direction = None conges = Conge.objects.filter(
).order_by('-date_demande') Q(validation_hierarchique=True) |
Q(employe__user__groups__name='direction')
).distinct().order_by('-date_demande')
else: else:
conges_en_attente = Conge.objects.filter(
employe__user__username = request.user conges = Conge.objects.filter(
employe=employe
).order_by('-date_demande') ).order_by('-date_demande')
return JsonResponse({ return JsonResponse({
@@ -186,9 +189,9 @@ def liste_demande_conges(request):
"type": dict(conge.TYPE_CHOICES).get(conge.type), "type": dict(conge.TYPE_CHOICES).get(conge.type),
"solde_conge": fonctions_utilitaire.solde_conge(conge.employe)["quota_annuel"] "solde_conge": fonctions_utilitaire.solde_conge(conge.employe)["quota_annuel"]
} }
for conge in conges_en_attente]}, for conge in conges
safe=False ]
) })
@login_required @login_required
def validation_de_conge(request): def validation_de_conge(request):