Compare commits
1 Commits
main
...
a97c233ddb
| Author | SHA1 | Date | |
|---|---|---|---|
| a97c233ddb |
8
.gitignore
vendored
8
.gitignore
vendored
@@ -1,7 +1,3 @@
|
|||||||
db.sqlite3
|
db.sqlite3
|
||||||
venv/
|
venv/*
|
||||||
media/
|
media/*
|
||||||
staticfiles/
|
|
||||||
.env
|
|
||||||
migrations/
|
|
||||||
*.pyc
|
|
||||||
52
Jenkinsfile
vendored
52
Jenkinsfile
vendored
@@ -1,52 +0,0 @@
|
|||||||
pipeline
|
|
||||||
{
|
|
||||||
agent any
|
|
||||||
options {
|
|
||||||
// This is required if you want to clean before build
|
|
||||||
skipDefaultCheckout(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
environment
|
|
||||||
{
|
|
||||||
SUDO_PASSWORD = credentials('sudo-password')
|
|
||||||
}
|
|
||||||
|
|
||||||
stages
|
|
||||||
{
|
|
||||||
stage ( 'checkout' )
|
|
||||||
{
|
|
||||||
steps
|
|
||||||
{
|
|
||||||
sh 'echo "Debut du pipeline"'
|
|
||||||
cleanWs()
|
|
||||||
checkout scm
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage ( 'Deploiement' )
|
|
||||||
{
|
|
||||||
when { branch 'main' }
|
|
||||||
steps {
|
|
||||||
sh '''
|
|
||||||
cd /var/www/sirh
|
|
||||||
echo $SUDO_PASSWORD | sudo -S chown -R jenkins:jenkins /var/www/sirh
|
|
||||||
|
|
||||||
git fetch origin main
|
|
||||||
git reset --hard origin/main
|
|
||||||
|
|
||||||
python3 -m venv venv
|
|
||||||
. venv/bin/activate
|
|
||||||
pip install -r requirements.txt
|
|
||||||
|
|
||||||
python manage.py makemigrations
|
|
||||||
python manage.py migrate
|
|
||||||
echo $SUDO_PASSWORD | sudo -S rm -r staticfiles
|
|
||||||
python manage.py collectstatic --noinput
|
|
||||||
|
|
||||||
echo $SUDO_PASSWORD | sudo -S chown -R www-data:www-data /var/www/sirh
|
|
||||||
echo "Deploiement reussi"
|
|
||||||
echo $SUDO_PASSWORD | sudo -S supervisorctl restart sirh
|
|
||||||
'''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
BIN
SIRH/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
SIRH/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
BIN
SIRH/__pycache__/__init__.cpython-313.pyc
Normal file
BIN
SIRH/__pycache__/__init__.cpython-313.pyc
Normal file
Binary file not shown.
BIN
SIRH/__pycache__/__init__.cpython-314.pyc
Normal file
BIN
SIRH/__pycache__/__init__.cpython-314.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
SIRH/__pycache__/settings.cpython-312.pyc
Normal file
BIN
SIRH/__pycache__/settings.cpython-312.pyc
Normal file
Binary file not shown.
BIN
SIRH/__pycache__/settings.cpython-313.pyc
Normal file
BIN
SIRH/__pycache__/settings.cpython-313.pyc
Normal file
Binary file not shown.
BIN
SIRH/__pycache__/settings.cpython-314.pyc
Normal file
BIN
SIRH/__pycache__/settings.cpython-314.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
SIRH/__pycache__/urls.cpython-312.pyc
Normal file
BIN
SIRH/__pycache__/urls.cpython-312.pyc
Normal file
Binary file not shown.
BIN
SIRH/__pycache__/urls.cpython-313.pyc
Normal file
BIN
SIRH/__pycache__/urls.cpython-313.pyc
Normal file
Binary file not shown.
BIN
SIRH/__pycache__/urls.cpython-314.pyc
Normal file
BIN
SIRH/__pycache__/urls.cpython-314.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
SIRH/__pycache__/views.cpython-312.pyc
Normal file
BIN
SIRH/__pycache__/views.cpython-312.pyc
Normal file
Binary file not shown.
BIN
SIRH/__pycache__/views.cpython-313.pyc
Normal file
BIN
SIRH/__pycache__/views.cpython-313.pyc
Normal file
Binary file not shown.
BIN
SIRH/__pycache__/views.cpython-314.pyc
Normal file
BIN
SIRH/__pycache__/views.cpython-314.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
SIRH/__pycache__/wsgi.cpython-312.pyc
Normal file
BIN
SIRH/__pycache__/wsgi.cpython-312.pyc
Normal file
Binary file not shown.
BIN
SIRH/__pycache__/wsgi.cpython-313.pyc
Normal file
BIN
SIRH/__pycache__/wsgi.cpython-313.pyc
Normal file
Binary file not shown.
BIN
SIRH/__pycache__/wsgi.cpython-314.pyc
Normal file
BIN
SIRH/__pycache__/wsgi.cpython-314.pyc
Normal file
Binary file not shown.
@@ -12,21 +12,21 @@ https://docs.djangoproject.com/en/5.2/ref/settings/
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from decouple import config
|
|
||||||
|
|
||||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
|
||||||
|
|
||||||
# Quick-start development settings - unsuitable for production
|
# Quick-start development settings - unsuitable for production
|
||||||
# See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/
|
# See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/
|
||||||
|
|
||||||
# SECURITY WARNING: keep the secret key used in production secret!
|
# SECURITY WARNING: keep the secret key used in production secret!
|
||||||
SECRET_KEY = config('SECRET_KEY')
|
SECRET_KEY = 'django-insecure--wdb9t(77rvyac$_q!n5gw86&0r(0&&j171v9h!-_$jahsza*5'
|
||||||
|
|
||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = config('DEBUG', default=False, cast=bool)
|
DEBUG = False
|
||||||
|
|
||||||
ALLOWED_HOSTS = config('ALLOWED_HOSTS', default=[]).split(',')
|
ALLOWED_HOSTS = ["https://support.cerfig.org", "support.cerfig.org"]
|
||||||
|
|
||||||
# Application definition
|
# Application definition
|
||||||
|
|
||||||
@@ -79,25 +79,24 @@ WSGI_APPLICATION = 'SIRH.wsgi.application'
|
|||||||
# Database
|
# Database
|
||||||
# https://docs.djangoproject.com/en/5.2/ref/settings/#databases
|
# https://docs.djangoproject.com/en/5.2/ref/settings/#databases
|
||||||
|
|
||||||
|
# DATABASES = {
|
||||||
|
# 'default': {
|
||||||
|
# 'ENGINE': 'django.db.backends.mysql',
|
||||||
|
# 'NAME': 'sirh',
|
||||||
|
# 'USER': 'sirh',
|
||||||
|
# 'PASSWORD': 'sirh-cerfig',
|
||||||
|
# 'HOST': 'localhost',
|
||||||
|
# 'PORT': '3306',
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
|
||||||
if config('ENVIRONMENT') == 'local':
|
DATABASES = {
|
||||||
DATABASES = {
|
'default': {
|
||||||
'default': {
|
'ENGINE': 'django.db.backends.sqlite3',
|
||||||
'ENGINE': 'django.db.backends.sqlite3',
|
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
|
||||||
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else:
|
|
||||||
DATABASES = {
|
|
||||||
'default': {
|
|
||||||
'ENGINE': 'django.db.backends.mysql',
|
|
||||||
'NAME': config('DATABASE_NAME'),
|
|
||||||
'USER': config('DATABASE_USER'),
|
|
||||||
'PASSWORD': config('DATABASE_PASSWORD'),
|
|
||||||
'HOST': config('DATABASE_HOST'),
|
|
||||||
'PORT': config('DATABASE_PORT'),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Password validation
|
# Password validation
|
||||||
# https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators
|
# https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators
|
||||||
@@ -150,7 +149,6 @@ MEDIA_ROOT = BASE_DIR / "media"
|
|||||||
|
|
||||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||||
|
|
||||||
# Configuration de l'email
|
|
||||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||||
EMAIL_HOST = 'ssl0.ovh.net'
|
EMAIL_HOST = 'ssl0.ovh.net'
|
||||||
EMAIL_PORT = 465
|
EMAIL_PORT = 465
|
||||||
|
|||||||
@@ -6,13 +6,13 @@
|
|||||||
{% if user.employe.photo %}
|
{% if user.employe.photo %}
|
||||||
<img src="{{ user.employe.photo.url }}"
|
<img src="{{ user.employe.photo.url }}"
|
||||||
class="rounded-circle"
|
class="rounded-circle"
|
||||||
width="100"
|
width="80"
|
||||||
height="100"
|
height="80"
|
||||||
style="object-fit:cover;">
|
style="object-fit:cover;">
|
||||||
{% else %}
|
{% else %}
|
||||||
<i class="bi bi-person-circle text-white" style="font-size:60px;"></i>
|
<i class="bi bi-person-circle text-white" style="font-size:60px;"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="text-white mt-2 fw-bold fs-5">
|
<div class="text-white mt-2">
|
||||||
{{ user.username }}
|
{{ user.username }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -41,6 +41,15 @@
|
|||||||
<a href="{% url 'gestion_salle:reservation-salle' %}" class="text-white fw-bold text-decoration-none mb-4" style="font-size:1.4em">
|
<a href="{% url 'gestion_salle:reservation-salle' %}" class="text-white fw-bold text-decoration-none mb-4" style="font-size:1.4em">
|
||||||
<i class="bi bi-calendar-check"></i> Réservation
|
<i class="bi bi-calendar-check"></i> Réservation
|
||||||
</a>
|
</a>
|
||||||
|
{% comment %} <a href="{% url 'rapport-rh' %}" class="text-white fw-bold text-decoration-none mb-2" style="font-size:1.2em">
|
||||||
|
<i class="bi bi-graph-up"></i> Rapports et Statistiques
|
||||||
|
</a> {% endcomment %}
|
||||||
|
{% comment %} <a href="" class="text-white fw-bold text-decoration-none mb-2" style="font-size:1.2em">
|
||||||
|
<i class="bi bi-person-gear"></i> Gestion des Utilisateurs
|
||||||
|
</a> {% endcomment %}
|
||||||
|
{% comment %} <a href="{% url 'gestion_employe:departement' %}" class="text-white fw-bold text-decoration-none mb-2" style="font-size:1.2em">
|
||||||
|
<i class="bi bi-gear"></i> Paramètres
|
||||||
|
</a> {% endcomment %}
|
||||||
<a href="{% url 'deconnexion' %}" class="text-white fw-bold text-decoration-none mb-4" style="font-size:1.4em">
|
<a href="{% url 'deconnexion' %}" class="text-white fw-bold text-decoration-none mb-4" style="font-size:1.4em">
|
||||||
<i class="bi bi-box-arrow-right"></i> Déconnexion
|
<i class="bi bi-box-arrow-right"></i> Déconnexion
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ urlpatterns = [
|
|||||||
name='deconnexion'
|
name='deconnexion'
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
'gestion-employe/',
|
'employé/',
|
||||||
include("gestion_employe.urls")
|
include("gestion_employe.urls")
|
||||||
),
|
),
|
||||||
path(
|
path(
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,5 @@
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from gestion_employe.models import Contrat, Employe
|
from gestion_employe.models import Contrat
|
||||||
from gestion_conge.models import Conge
|
from gestion_conge.models import Conge
|
||||||
|
|
||||||
|
|
||||||
@@ -7,10 +7,6 @@ QUOTA_CONGE_ANNUEL = 30
|
|||||||
NOMBRE_PAGINATION = 8
|
NOMBRE_PAGINATION = 8
|
||||||
DEBUT_RAPPEL = 60
|
DEBUT_RAPPEL = 60
|
||||||
DUREE_FIN_CONTRAT = 90
|
DUREE_FIN_CONTRAT = 90
|
||||||
try:
|
|
||||||
EMAIL_ASSISTANTE_DE_DIRECTION = list(Employe.objects.filter(fonction="assistant_direction").values_list('user__email', flat=True))
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
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é"""
|
||||||
@@ -35,26 +31,4 @@ def solde_conge(employe):
|
|||||||
"success": True,
|
"success": True,
|
||||||
"quota_annuel": QUOTA_CONGE_ANNUEL - jours_conges_valider,
|
"quota_annuel": QUOTA_CONGE_ANNUEL - jours_conges_valider,
|
||||||
"nombre_jours_valide": jours_conges_valider
|
"nombre_jours_valide": jours_conges_valider
|
||||||
}
|
}
|
||||||
|
|
||||||
def envoyer_mail(sujet, message, destinataires):
|
|
||||||
"""Fonction d'envoi de mail"""
|
|
||||||
from django.core.mail import send_mail
|
|
||||||
from django.conf import settings
|
|
||||||
|
|
||||||
send_mail(
|
|
||||||
sujet,
|
|
||||||
message,
|
|
||||||
settings.EMAIL_HOST_USER,
|
|
||||||
destinataires,
|
|
||||||
fail_silently=False,
|
|
||||||
)
|
|
||||||
|
|
||||||
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))
|
|
||||||
Binary file not shown.
BIN
gestion_conge/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
gestion_conge/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/__init__.cpython-313.pyc
Normal file
BIN
gestion_conge/__pycache__/__init__.cpython-313.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/__init__.cpython-314.pyc
Normal file
BIN
gestion_conge/__pycache__/__init__.cpython-314.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
gestion_conge/__pycache__/admin.cpython-312.pyc
Normal file
BIN
gestion_conge/__pycache__/admin.cpython-312.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/admin.cpython-313.pyc
Normal file
BIN
gestion_conge/__pycache__/admin.cpython-313.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/admin.cpython-314.pyc
Normal file
BIN
gestion_conge/__pycache__/admin.cpython-314.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
gestion_conge/__pycache__/apps.cpython-312.pyc
Normal file
BIN
gestion_conge/__pycache__/apps.cpython-312.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/apps.cpython-313.pyc
Normal file
BIN
gestion_conge/__pycache__/apps.cpython-313.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/apps.cpython-314.pyc
Normal file
BIN
gestion_conge/__pycache__/apps.cpython-314.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
gestion_conge/__pycache__/forms.cpython-312.pyc
Normal file
BIN
gestion_conge/__pycache__/forms.cpython-312.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/forms.cpython-313.pyc
Normal file
BIN
gestion_conge/__pycache__/forms.cpython-313.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/forms.cpython-314.pyc
Normal file
BIN
gestion_conge/__pycache__/forms.cpython-314.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
gestion_conge/__pycache__/models.cpython-312.pyc
Normal file
BIN
gestion_conge/__pycache__/models.cpython-312.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/models.cpython-313.pyc
Normal file
BIN
gestion_conge/__pycache__/models.cpython-313.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/models.cpython-314.pyc
Normal file
BIN
gestion_conge/__pycache__/models.cpython-314.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
gestion_conge/__pycache__/urls.cpython-312.pyc
Normal file
BIN
gestion_conge/__pycache__/urls.cpython-312.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/urls.cpython-313.pyc
Normal file
BIN
gestion_conge/__pycache__/urls.cpython-313.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/urls.cpython-314.pyc
Normal file
BIN
gestion_conge/__pycache__/urls.cpython-314.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
gestion_conge/__pycache__/views.cpython-312.pyc
Normal file
BIN
gestion_conge/__pycache__/views.cpython-312.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/views.cpython-313.pyc
Normal file
BIN
gestion_conge/__pycache__/views.cpython-313.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/__pycache__/views.cpython-314.pyc
Normal file
BIN
gestion_conge/__pycache__/views.cpython-314.pyc
Normal file
Binary file not shown.
30
gestion_conge/migrations/0001_initial.py
Normal file
30
gestion_conge/migrations/0001_initial.py
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Generated by Django 5.2.13 on 2026-04-17 12:03
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('gestion_employe', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Conge',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('date_debut', models.DateField(verbose_name='Date de Début')),
|
||||||
|
('date_fin', models.DateField(verbose_name='Date de Fin')),
|
||||||
|
('type', models.CharField(choices=[('conge_annuel', 'Conge Annuel')], max_length=100, verbose_name='Type de Congé')),
|
||||||
|
('date_demande', models.DateField(auto_now_add=True, verbose_name='Date de Demande')),
|
||||||
|
('validation_hierarchique', models.BooleanField(default=None, null=True)),
|
||||||
|
('validation_direction', models.BooleanField(default=None, null=True)),
|
||||||
|
('motif_refus', models.TextField(blank=True, null=True)),
|
||||||
|
('employe', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='employe', to='gestion_employe.employe')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
gestion_conge/migrations/__pycache__/__init__.cpython-310.pyc
Normal file
BIN
gestion_conge/migrations/__pycache__/__init__.cpython-310.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/migrations/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
gestion_conge/migrations/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/migrations/__pycache__/__init__.cpython-313.pyc
Normal file
BIN
gestion_conge/migrations/__pycache__/__init__.cpython-313.pyc
Normal file
Binary file not shown.
BIN
gestion_conge/migrations/__pycache__/__init__.cpython-314.pyc
Normal file
BIN
gestion_conge/migrations/__pycache__/__init__.cpython-314.pyc
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user