Ajout du contexte processor

This commit is contained in:
Soriba SYLLA
2026-08-31 09:48:21 +00:00
committed by Soriba SYLLA
parent 13e9d7dd19
commit 65ecef52b5
39 changed files with 55 additions and 37 deletions

View File

@@ -28,7 +28,7 @@ SECRET_KEY = config('SECRET_KEY')
DEBUG = config('DEBUG', default=True, cast=bool) DEBUG = config('DEBUG', default=True, cast=bool)
ALLOWED_HOSTS = config('ALLOWED_HOSTS', default=[]).split(',') ALLOWED_HOSTS = config('ALLOWED_HOSTS', default=[]).split(',')
CSRF_TRUSTED_ORIGINS = config("CSRF_TRUSTED_ORIGINS", default=[]).split(",") #CSRF_TRUSTED_ORIGINS = config("CSRF_TRUSTED_ORIGINS", default=[]).split(",")
# Application definition # Application definition
@@ -67,6 +67,7 @@ TEMPLATES = [
'django.template.context_processors.request', 'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth', 'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages',
'contexte_universel.contexte_universel',
], ],
}, },
}, },
@@ -145,9 +146,9 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
# LOGIN_URL = '/client/' # LOGIN_URL = '/client/'
LOGIN_URL = 'simple-sso-login' LOGIN_URL = 'simple-sso-login'
SSO_PRIVATE_KEY = 'D2brFY3LnNDLQBBnvYPXAn185Wi9EpPvnHsUosjEZ9vZMyEtXqkcVfFWkVbN0xpG' SSO_PRIVATE_KEY = config('SSO_PRIVATE_KEY')
SSO_PUBLIC_KEY = 'm9JDP3uGPmGG9ULqPw2BY3ryBNMTGRsuukgIOhk7lIN9lT0wlr2zhoRZiNZ28UCM' SSO_PUBLIC_KEY = config('SSO_PUBLIC_KEY')
SSO_SERVER = 'http://test-authentification.cerfig.org:89/server/' SSO_SERVER = config('SSO_SERVER')
#SSO_LOGOUT_URL = 'http://test-authentification.cerfig.org:89/deconnexion' #SSO_LOGOUT_URL = 'http://test-authentification.cerfig.org:89/deconnexion'
# Configuration de l'email # Configuration de l'email

View File

@@ -10,11 +10,17 @@ class SIRHClient(Client):
def build_user(self, user_data): def build_user(self, user_data):
"""Crée le User et son Profile avec les infos reçues du serveur.""" """Crée le User et son Profile avec les infos reçues du serveur."""
user_data_copy = user_data.copy() user_data_copy = user_data.copy()
user_data.pop("departement")
user_data.pop("chef_departement") print("Un petit test", user_data_copy)
user_data.pop("groups")
user_data.pop("departement", None)
user_data.pop("chef_departement", None)
user_data.pop("groups", None)
user = super().build_user(user_data) user = super().build_user(user_data)
departement = None
if "departement" in user_data_copy:
departement = Departement.objects.get_or_create( departement = Departement.objects.get_or_create(
nom=user_data_copy.get("departement", ""))[0] nom=user_data_copy.get("departement", ""))[0]
@@ -22,7 +28,7 @@ class SIRHClient(Client):
user = user, user = user,
defaults = { defaults = {
"departement": departement, "departement": departement,
"chef": user_data_copy.get("chef_departement", ""), "chef": user_data_copy.get("chef_departement", None),
} }
) )

View File

@@ -18,7 +18,7 @@ from django.contrib import admin
from django.urls import include, path from django.urls import include, path
# from django.conf.urls.static import static # from django.conf.urls.static import static
from django.conf import settings from django.conf import settings
from . import views
from .sso import SIRHClient from .sso import SIRHClient
client_sirh = SIRHClient( client_sirh = SIRHClient(
@@ -28,35 +28,23 @@ client_sirh = SIRHClient(
) )
urlpatterns = [ urlpatterns = [
# path('login/',
# views.login_view,
# name='login'
# ),
# path(
# 'deconnexion/',
# views.deconnexion_view,
# name='deconnexion'
# ),
path(
'',
<<<<<<< HEAD
views.login_view,
name='index'
),
path('login/', path('login/',
views.login_view, views.connexion,
name='login' name='login'
), ),
path( path(
'deconnexion/', 'deconnexion/',
views.deconnexion_view, views.deconnexion,
name='deconnexion' name='deconnexion'
), ),
path( path(
<<<<<<< HEAD
'gestion-employe/', 'gestion-employe/',
======= =======
>>>>>>> 4934b42 (Implementation de sso) >>>>>>> 4934b42 (Implementation de sso)
=======
'',
>>>>>>> 55e5a28 (Ajout du contexte processor)
include("gestion_employe.urls") include("gestion_employe.urls")
), ),
path( path(

View File

@@ -0,0 +1,16 @@
from django.contrib.auth import logout
from django.shortcuts import redirect
from django.urls import reverse_lazy
from django.conf import settings
def connexion(request):
"""Redirige vers le serveur SSO pour l'authentification."""
return redirect(reverse_lazy("simple-sso-login"))
def deconnexion(request):
"""Gérez la déconnexion des utilisateurs."""
logout(request)
#return redirect(settings.SSO_LOGOUT_URL)
return redirect("http://authentification.cerfig.org/login")

7
contexte_universel.py Normal file
View File

@@ -0,0 +1,7 @@
from decouple import config
def contexte_universel(request):
return {
"SIRH_LIEN": config("SIRH_LIEN"),
"SGL_LIEN": config("SGL_LIEN")
}

View File

@@ -7,14 +7,11 @@ QUOTA_CONGE_ANNUEL = 30
NOMBRE_PAGINATION = 8 NOMBRE_PAGINATION = 8
DEBUT_RAPPEL = 60 DEBUT_RAPPEL = 60
DUREE_FIN_CONTRAT = 90 DUREE_FIN_CONTRAT = 90
<<<<<<< HEAD
try: try:
EMAIL_ASSISTANTE_DE_DIRECTION = list(Employe.objects.filter(fonction="assistant_direction").values_list('user__email', flat=True)) EMAIL_ASSISTANTE_DE_DIRECTION = list(Employe.objects.filter(fonction="assistant_direction").values_list('user__email', flat=True))
except: except:
pass pass
=======
# EMAIL_ASSISTANTE_DE_DIRECTION = list(Employe.objects.filter(fonction="assistant_direction").values_list('user__email', flat=True))
>>>>>>> 4934b42 (Implementation de sso)
def solde_conge(employe): def solde_conge(employe):
"""Fonction de calcul du solde de congé restant l'employé""" """Fonction de calcul du solde de congé restant l'employé"""

View File

@@ -21,6 +21,9 @@ from .models import Affectation, Contrat, Employe, Formation
@login_required @login_required
def index(request): def index(request):
"""Vue d'index""" """Vue d'index"""
if not request.user.groups.filter(name="ressource_humaine").exists():
return redirect('gestion_employe:mon-profil')
employes = Employe.objects.all().order_by('-user__date_joined') employes = Employe.objects.all().order_by('-user__date_joined')
nombre_employes = Employe.objects.count() nombre_employes = Employe.objects.count()
nombre_cps = Contrat.objects.filter(type_contrat='contrat_prestation').count() nombre_cps = Contrat.objects.filter(type_contrat='contrat_prestation').count()
@@ -95,7 +98,7 @@ def affecter_employe_projet(request):
elif total_affectation + temps_nouveau > 100: elif total_affectation + temps_nouveau > 100:
messages.warning( messages.warning(
request, request,
f"Les pourcentages d'affectation de l'employé {employe.first_name} {employe.last_name} dépasse 100% sur les différents projets ({total_affectation + temps_nouveau}%)." f"Les pourcentages d'affectation de l'employé {employe.user.first_name} {employe.user.last_name} dépasse 100% sur les différents projets ({total_affectation + temps_nouveau}%)."
) )
return redirect('gestion_employe:index') return redirect('gestion_employe:index')