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 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 } 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)) def envoyer_mail(sujet, message, destinataires): """Fonction d'envoi de mail""" send_mail( sujet, message, settings.EMAIL_HOST_USER, destinataires, fail_silently=False, )