Files
sirh/fonction_utilitaire/fonctions_utilitaire.py

76 lines
2.7 KiB
Python
Raw Normal View History

2026-09-04 12:19:27 +00:00
from django.conf import settings
from django.core.mail import send_mail
from django.utils import timezone
from gestion_conge.models import Conge
from gestion_employe.models import Contrat, Employe
QUOTA_CONGE_ANNUEL = 30
NOMBRE_PAGINATION = 8
DEBUT_RAPPEL = 60
DUREE_FIN_CONTRAT = 90
2026-08-31 09:48:21 +00:00
2026-07-14 09:03:28 +00:00
try:
EMAIL_ASSISTANTE_DE_DIRECTION = list(Employe.objects.filter(fonction="assistant_direction").values_list('user__email', flat=True))
except:
pass
try:
EMAIL_EQUIPE_INFORMATIQUE = list(
Employe.objects.filter(departement__nom="Systeme informatique").values_list('user__email', flat=True)
) or ["support@cerfig.org"]
except:
EMAIL_EQUIPE_INFORMATIQUE = ["support@cerfig.org"]
def est_equipe_informatique(employe):
"""Vérifie si un employé appartient au département informatique"""
return employe.departement and employe.departement.nom == "Systeme informatique"
def est_assistante_direction(employe):
"""Vérifie si un employé est l'assistante de direction"""
return employe.fonction == "assistant_direction"
def solde_conge(employe):
"""Fonction de calcul du solde de congé restant l'employé"""
contrat = Contrat.objects.filter(employe=employe, statut='actif').order_by('-date_debut').first()
if contrat is None or not contrat.date_debut:
return {
"success": False,
"message": "Votre contrat de travail n'a pas été correctement renseigner. Veuillez contacter les ressources humaines."
}
conges = Conge.objects.filter(employe=employe, validation_direction=True, date_fin__year = timezone.now().date().year)
jours_conges_valider = sum([conge.nombre_jours for conge in conges])
if jours_conges_valider >= QUOTA_CONGE_ANNUEL:
return {
"success": False,
"message": "Vous avez atteint le nombre maximal de jours de congés. Veuillez contacter l'administration."
}
return {
"success": True,
"quota_annuel": QUOTA_CONGE_ANNUEL - jours_conges_valider,
"nombre_jours_valide": jours_conges_valider
2026-05-07 11:22:14 +00:00
}
def destinataire_mail_demande_conges(employe):
"""Fonction de récupération des destinataires pour les mails de demande de congés"""
if employe.chef:
return EMAIL_ASSISTANTE_DE_DIRECTION
else:
if employe.departement:
chefs_departement = Employe.objects.filter(departement=employe.departement, chef=True)
return list(chefs_departement.values_list('user__email', flat=True))
2026-09-04 12:19:27 +00:00
def envoyer_mail(sujet, message, destinataires):
"""Fonction d'envoi de mail"""
send_mail(
sujet,
message,
settings.EMAIL_HOST_USER,
destinataires,
fail_silently=False,
)