feature: Affichage de la lite des conges en fonction des profil
This commit is contained in:
@@ -129,55 +129,58 @@ def demander_conge(request):
|
||||
|
||||
@login_required
|
||||
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:
|
||||
employe = Employe.objects.get(user__username = request.user)
|
||||
employe = Employe.objects.get(user=request.user)
|
||||
except Employe.DoesNotExist:
|
||||
return JsonResponse({
|
||||
"success": False,
|
||||
"message": "Votre profil Utilisateur n'est lié à aucun profil Employé. Veuillez contacter l'administrateur."
|
||||
"message": "Profil employé introuvable"
|
||||
})
|
||||
|
||||
try:
|
||||
affectation = Affectation.objects.get(
|
||||
affectation = Affectation.objects.filter(
|
||||
employe=employe,
|
||||
date_fin_daffectation__gte=timezone.now().date()
|
||||
)
|
||||
except Affectation.DoesNotExist:
|
||||
affectation = None
|
||||
).first()
|
||||
|
||||
is_direction = employe.user.groups.filter(name='direction').exists()
|
||||
|
||||
if employe.chef:
|
||||
print("chef")
|
||||
conges_en_attente = Conge.objects.filter(
|
||||
employe__departement = employe.departement,
|
||||
validation_hierarchique = None
|
||||
|
||||
conges = Conge.objects.filter(
|
||||
Q(employe__departement=employe.departement) |
|
||||
Q(employe=employe)
|
||||
).order_by('-date_demande')
|
||||
|
||||
elif affectation and affectation.role == "chef_projet":
|
||||
|
||||
employes_du_projet = Affectation.objects.filter(
|
||||
projet = affectation.projet,
|
||||
date_fin_daffectation__gte = timezone.now().date()
|
||||
).values('employe')
|
||||
projet=affectation.projet,
|
||||
date_fin_daffectation__gte=timezone.now().date()
|
||||
).values_list('employe', flat=True)
|
||||
|
||||
conges_en_attente = Conge.objects.filter(
|
||||
employe__in = employes_du_projet,
|
||||
validation_hierarchique = None
|
||||
conges = Conge.objects.filter(
|
||||
Q(employe__in=employes_du_projet) |
|
||||
Q(employe=employe)
|
||||
).order_by('-date_demande')
|
||||
|
||||
elif 'direction' in employe.user.groups.values_list('name', flat=True):
|
||||
conges_en_attente = Conge.objects.filter(
|
||||
validation_hierarchique = True,
|
||||
validation_direction = None
|
||||
).order_by('-date_demande')
|
||||
|
||||
elif is_direction:
|
||||
|
||||
conges = Conge.objects.filter(
|
||||
Q(validation_hierarchique=True) |
|
||||
Q(employe__user__groups__name='direction')
|
||||
).distinct().order_by('-date_demande')
|
||||
|
||||
else:
|
||||
conges_en_attente = Conge.objects.filter(
|
||||
employe__user__username = request.user
|
||||
|
||||
conges = Conge.objects.filter(
|
||||
employe=employe
|
||||
).order_by('-date_demande')
|
||||
|
||||
return JsonResponse({
|
||||
"success": True,
|
||||
"data":[
|
||||
"data": [
|
||||
{
|
||||
**model_to_dict(conge),
|
||||
"prenom_nom": f"{conge.employe.user.first_name} {conge.employe.user.last_name}",
|
||||
@@ -186,9 +189,9 @@ def liste_demande_conges(request):
|
||||
"type": dict(conge.TYPE_CHOICES).get(conge.type),
|
||||
"solde_conge": fonctions_utilitaire.solde_conge(conge.employe)["quota_annuel"]
|
||||
}
|
||||
for conge in conges_en_attente]},
|
||||
safe=False
|
||||
)
|
||||
for conge in conges
|
||||
]
|
||||
})
|
||||
|
||||
@login_required
|
||||
def validation_de_conge(request):
|
||||
|
||||
Reference in New Issue
Block a user