Compare commits
2 Commits
message_co
...
54dc65f0d8
| Author | SHA1 | Date | |
|---|---|---|---|
| 54dc65f0d8 | |||
|
|
29a42ee6be |
Binary file not shown.
@@ -15,6 +15,8 @@ try:
|
||||
except:
|
||||
pass
|
||||
|
||||
EMAIL_EQUIPE_INFORMATIQUE = ["support@cerfig.org"]
|
||||
|
||||
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()
|
||||
|
||||
Binary file not shown.
@@ -12,27 +12,22 @@
|
||||
</div>
|
||||
{% if messages %}
|
||||
{% for message in messages %}
|
||||
<div class="alert alert-{% if message.tags == 'error' %}danger{% else %}success{% endif %} alert-dismissible fade show" role="alert">
|
||||
<div class="alert alert-{% if message.tags == 'error' %}danger{% else %}success{% endif %} alert-dismissible fade show mt-2" role="alert">
|
||||
{{ message }}
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if not expiration_contrat %} <div class="alert alert-danger fade show alert-dismissible mt-2"> <strong>Important :</strong>
|
||||
Les informations sur votre contrat n'ont pas été renseignées,
|
||||
veuillez contacter les ressources humaines. </div>
|
||||
|
||||
{% elif contrat_nb_jours_restant > 0 %} <div class="alert alert-danger fade show alert-dismissible mt-2"> <strong>Important :</strong>
|
||||
Votre contrat de travail expire dans <strong>{{ contrat_nb_jours_restant }} jour{{ contrat_nb_jours_restant|pluralize }}</strong>,
|
||||
veuillez contacter les ressources humaines. </div>
|
||||
{% if not has_contrat %}
|
||||
<div class="alert alert-danger mt-2">
|
||||
<strong>Important :</strong> Les informations sur votre contrat n'ont pas été renseignées, veuillez contacter les ressources humaines.
|
||||
</div>
|
||||
|
||||
{% elif contrat_nb_jours_restant == 0 %} <div class="alert alert-danger fade show alert-dismissible mt-2"> <strong>Important :</strong>
|
||||
Votre contrat de travail <strong>expire aujourd'hui</strong>.
|
||||
Veuillez contacter les ressources humaines. </div>
|
||||
|
||||
{% elif contrat_nb_jours_restant < 0 %} <div class="alert alert-danger fade show alert-dismissible mt-2"> <strong>Important :</strong>
|
||||
Votre contrat de travail est <strong>déjà expiré</strong>.
|
||||
Veuillez contacter les ressources humaines. </div>
|
||||
{% elif expiration_contrat %}
|
||||
<div class="alert alert-warning mt-2">
|
||||
<strong>Important :</strong> Votre contrat de travail expire dans {{ contrat_nb_jours_restant }} jours, veuillez contacter les ressources humaines.
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="accordion mt-2" id="accordionInformationEmploye">
|
||||
@@ -132,7 +127,7 @@ Veuillez contacter les ressources humaines. </div>
|
||||
</div>
|
||||
<div class="form-group mb-2">
|
||||
<label>Statut :</label>
|
||||
<input type="text" class="form-control" value="{{ contrat.statut }}" id="statut" readonly>
|
||||
<input type="text" class="form-control" value="{{ contrat.statut }}" id="satut" readonly>
|
||||
</div>
|
||||
<div class="form-group mb-2">
|
||||
<label>fichier :</label>
|
||||
|
||||
@@ -3,8 +3,8 @@ from datetime import datetime, timedelta
|
||||
|
||||
import requests
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from decouple import config
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth import logout
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.password_validation import validate_password
|
||||
@@ -27,6 +27,18 @@ def index(request):
|
||||
if not request.user.groups.filter(name="ressource_humaine").exists():
|
||||
return redirect('gestion_employe:mon-profil')
|
||||
|
||||
response = requests.get(f"{config('SERVEUR_AUTHENTIFICATION')}recuperer-list-departement/")
|
||||
|
||||
if response.status_code == 200:
|
||||
try:
|
||||
departements_data = response.json()
|
||||
for dept in departements_data:
|
||||
Departement.objects.update_or_create(
|
||||
nom = dept['nom']
|
||||
)
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"[ERROR] Erreur lors du décodage JSON : {e}")
|
||||
|
||||
employes = Employe.objects.all().order_by('-user__date_joined')
|
||||
nombre_employes = Employe.objects.count()
|
||||
nombre_cps = Contrat.objects.filter(type_contrat='contrat_prestation').count()
|
||||
@@ -521,7 +533,7 @@ def modifier_mot_passe(request):
|
||||
}
|
||||
|
||||
response = requests.post(
|
||||
"http://localhost:8000/modifier-mot-de-passe/",
|
||||
f"{config('SERVEUR_AUTHENTIFICATION')}modifier-mot-de-passe/",
|
||||
json=donnees,
|
||||
headers=headers
|
||||
)
|
||||
|
||||
Binary file not shown.
@@ -16,7 +16,7 @@ from .models import Reservation
|
||||
|
||||
@login_required
|
||||
def index(request: HttpRequest):
|
||||
|
||||
"""Vue d'affichage de la page d'accueil de la gestion des salles"""
|
||||
try:
|
||||
employe = Employe.objects.get(user=request.user)
|
||||
except Employe.DoesNotExist:
|
||||
@@ -37,11 +37,11 @@ def index(request: HttpRequest):
|
||||
besoin_ordi = form.cleaned_data['besoin_ordi']
|
||||
|
||||
if date_fin < date_debut:
|
||||
messages.error(request, "Date fin invalide.")
|
||||
messages.error(request, "La date de fin est antérieure à la date de début.")
|
||||
return redirect('gestion_salle:reservation-salle')
|
||||
|
||||
if heure_fin <= heure_debut:
|
||||
messages.error(request, "Heure invalide.")
|
||||
messages.error(request, "L'heure de fin est antérieure à l'heure de début.")
|
||||
return redirect('gestion_salle:reservation-salle')
|
||||
|
||||
if not request.user.first_name.strip() or not request.user.last_name.strip():
|
||||
@@ -55,7 +55,6 @@ def index(request: HttpRequest):
|
||||
current_date = date_debut
|
||||
|
||||
while current_date <= date_fin:
|
||||
|
||||
reservation = Reservation.objects.create(
|
||||
employe=employe,
|
||||
date_debut=current_date,
|
||||
@@ -74,16 +73,27 @@ def index(request: HttpRequest):
|
||||
|
||||
messages.success(request, "Réservation(s) créée(s) avec succès.")
|
||||
|
||||
if fonctions_utilitaire.EMAIL_ASSISTANTE_DE_DIRECTION:
|
||||
if fonctions_utilitaire.EMAIL_ASSISTANTE_DE_DIRECTION and salle != "lien_zoom":
|
||||
fonctions_utilitaire.envoyer_mail(
|
||||
sujet = "Reservation de salle",
|
||||
message = f"""
|
||||
message = f"""Bonjour,
|
||||
Une nouvelle demande de réservation de la {dict(Reservation.TYPE_CHOICES).get(salle)} a été effectuée par {employe.user.first_name} {employe.user.last_name} du {form.cleaned_data.get('date_debut').strftime('%d/%m/%Y')} au {form.cleaned_data.get('date_fin').strftime('%d/%m/%Y')} pour motif "{motif}".
|
||||
Veuillez vous connecter à la plateforme pour plus de détails.""",
|
||||
destinataires = fonctions_utilitaire.EMAIL_ASSISTANTE_DE_DIRECTION
|
||||
)
|
||||
|
||||
if (salle == "lien_zoom" or besoin_zoom or besoin_ordi) and fonctions_utilitaire.EMAIL_EQUIPE_INFORMATIQUE:
|
||||
fonctions_utilitaire.envoyer_mail(
|
||||
sujet="Demande de lien Zoom",
|
||||
message=f"""Bonjour,
|
||||
Une nouvelle demande de réservation de salle nécessitant un lien Zoom a été effectuée par {employe.user.first_name} {employe.user.last_name} du {date_debut.strftime('%d/%m/%Y')} au {date_fin.strftime('%d/%m/%Y')} de {heure_debut.strftime('%H:%M')} a {heure_fin.strftime('%H:%M')} pour le motif {motif}
|
||||
|
||||
Veuillez vous connecter à la plateforme pour plus de détails.""",
|
||||
destinataires=fonctions_utilitaire.EMAIL_EQUIPE_INFORMATIQUE
|
||||
)
|
||||
return redirect('gestion_salle:reservation-salle')
|
||||
|
||||
|
||||
formulaire_reservation = ReservationForm()
|
||||
departement = employe.departement
|
||||
|
||||
|
||||
Reference in New Issue
Block a user