Merge branch 'develop'

This commit is contained in:
Luc SORIGNET
2024-12-16 10:20:17 +01:00
5 changed files with 81 additions and 17 deletions

View File

@ -1,11 +1,12 @@
from django.db.models.signals import post_save, post_delete, m2m_changed from django.db.models.signals import post_save, post_delete, m2m_changed
from django.dispatch import receiver from django.dispatch import receiver
from django.core.cache import cache from django.core.cache import cache
from GestionInscriptions.models import FicheInscription, Eleve, Responsable from GestionInscriptions.models import FicheInscription, Eleve, Responsable
from GestionLogin.models import Profil from GestionLogin.models import Profil
from N3wtSchool import settings from N3wtSchool import settings
from N3wtSchool.redis_client import redis_client from N3wtSchool.redis_client import redis_client
import logging
logger = logging.getLogger(__name__)
def clear_cache(): def clear_cache():
# Préfixes des clés à supprimer # Préfixes des clés à supprimer
@ -14,10 +15,10 @@ def clear_cache():
for prefix in prefixes: for prefix in prefixes:
# Utiliser le motif pour obtenir les clés correspondant au préfixe # Utiliser le motif pour obtenir les clés correspondant au préfixe
pattern = f'*{prefix}*' pattern = f'*{prefix}*'
print(f'pattern : {pattern}') logger.debug(f'pattern : {pattern}')
for key in redis_client.scan_iter(pattern): for key in redis_client.scan_iter(pattern):
redis_client.delete(key) redis_client.delete(key)
print(f'deleting : {key}') logger.debug(f'deleting : {key}')
@receiver(post_save, sender=FicheInscription) @receiver(post_save, sender=FicheInscription)
@receiver(post_delete, sender=FicheInscription) @receiver(post_delete, sender=FicheInscription)

View File

@ -8,7 +8,6 @@ from N3wtSchool import settings, bdd
import requests import requests
import logging import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logger.setLevel(logging.WARNING)
@shared_task @shared_task
def check_for_signature_deadlines(): def check_for_signature_deadlines():
@ -22,7 +21,7 @@ def check_for_signature_deadlines():
send_notification(dossier) send_notification(dossier)
def send_notification(dossier): def send_notification(dossier):
print(f'Dossier en attente.... {dossier} - Positionnement à l\'état A_RELANCER') logger.debug(f'Dossier en attente.... {dossier} - Positionnement à l\'état A_RELANCER')
# Changer l'état de l'automate # Changer l'état de l'automate
updateStateMachine(dossier, 'relanceDI') updateStateMachine(dossier, 'relanceDI')

View File

@ -2,10 +2,12 @@ import logging
from django.db.models import Q from django.db.models import Q
from GestionInscriptions.models import FicheInscription, Profil, Eleve from GestionInscriptions.models import FicheInscription, Profil, Eleve
logger = logging.getLogger('N3wtSchool')
def getAllObjects(_objectName): def getAllObjects(_objectName):
result = _objectName.objects.all() result = _objectName.objects.all()
if not result: if not result:
logging.warning("Aucun résultat n'a été trouvé - " + _objectName.__name__) logger.warning("Aucun résultat n'a été trouvé - " + _objectName.__name__)
return result return result
def getObject(_objectName, _columnName, _value): def getObject(_objectName, _columnName, _value):
@ -13,7 +15,7 @@ def getObject(_objectName, _columnName, _value):
try : try :
result = _objectName.objects.get(**{_columnName: _value}) result = _objectName.objects.get(**{_columnName: _value})
except _objectName.DoesNotExist: except _objectName.DoesNotExist:
logging.error("Aucun résultat n'a été trouvé - " + _objectName.__name__ + " (" + _columnName + "=" + str(_value) + ")") logger.error("Aucun résultat n'a été trouvé - " + _objectName.__name__ + " (" + _columnName + "=" + str(_value) + ")")
return result return result
@ -22,7 +24,7 @@ def getObjects(_objectName, _columnName, _value, _reverseCondition=False):
try : try :
results = _objectName.objects.filter(**{_columnName: _value}) if _reverseCondition == False else _objectName.objects.filter(~Q(**{_columnName: _value})) results = _objectName.objects.filter(**{_columnName: _value}) if _reverseCondition == False else _objectName.objects.filter(~Q(**{_columnName: _value}))
except _objectName.DoesNotExist: except _objectName.DoesNotExist:
logging.error("Aucun résultat n'a été trouvé - " + _objectName.__name__ + " (" + _columnName + "=" + str(_value) + ")") logger.error("Aucun résultat n'a été trouvé - " + _objectName.__name__ + " (" + _columnName + "=" + str(_value) + ")")
return results return results
@ -53,7 +55,7 @@ def getLastId(_object):
try: try:
result = _object.objects.latest('id').id result = _object.objects.latest('id').id
except: except:
logging.warning("Aucun résultat n'a été trouvé - ") logger.warning("Aucun résultat n'a été trouvé - ")
return result return result
def searchObjects(_objectName, _searchTerm=None, _excludeStates=None): def searchObjects(_objectName, _searchTerm=None, _excludeStates=None):

View File

@ -92,6 +92,68 @@ SESSION_CACHE_ALIAS = 'default'
WSGI_APPLICATION = 'N3wtSchool.wsgi.application' WSGI_APPLICATION = 'N3wtSchool.wsgi.application'
#LOGGING
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"formatters": { # Ajout des formateurs
"verbose": {
"format": "{asctime} [{levelname}] [{name}] {module}.{funcName} - {message}",
"style": "{",
"datefmt": "%Y-%m-%d %H:%M:%S"
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "verbose", # Utilisation du formateur
},
},
"root": {
"handlers": ["console"],
"level": os.getenv("ROOT_LOG_LEVEL", "INFO"),
},
"loggers": {
"celery": {
"handlers": ["console"],
"level": os.getenv("CELERY_LOG_LEVEL", "INFO"),
"propagate": False,
},
"N3wtSchool": {
"handlers": ["console"],
"level": os.getenv("N3WTSCHOOL_LOG_LEVEL", "INFO"),
"propagate": False,
},
"GestionNotification": {
"handlers": ["console"],
"level": os.getenv("GESTION_NOTIFICATION_LOG_LEVEL", "INFO"),
"propagate": False,
},
"GestionLogin": {
"handlers": ["console"],
"level": os.getenv("GESTION_LOGIN_LOG_LEVEL", "INFO"),
"propagate": False,
},
"GestionInscriptions": {
"handlers": ["console"],
"level": os.getenv("GESTION_INSCRIPTIONS_LOG_LEVEL", "DEBUG"),
"propagate": False,
},
"GestionMessagerie": {
"handlers": ["console"],
"level": os.getenv("GESTION_MESSAGERIE_LOG_LEVEL", "INFO"),
"propagate": False,
},
"GestionEnseignants": {
"handlers": ["console"],
"level": os.getenv("GESTION_ENSEIGNANTS_LOG_LEVEL", "INFO"),
"propagate": False,
},
},
}
# Password validation # Password validation
# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators

View File

@ -19,12 +19,12 @@ from django.urls import include, path, re_path
from rest_framework import permissions from rest_framework import permissions
from drf_yasg.views import get_schema_view from drf_yasg.views import get_schema_view
from drf_yasg import openapi from drf_yasg import openapi
from __version__ import __version__
schema_view = get_schema_view( schema_view = get_schema_view(
openapi.Info( openapi.Info(
title="N3wtSchool API", title="N3wtSchool API",
default_version='v1', default_version=__version__,
description="Documentation de l'API de N3wtSchool", description="Documentation de l'API de N3wtSchool",
terms_of_service="https://www.google.com/policies/terms/", terms_of_service="https://www.google.com/policies/terms/",
contact=openapi.Contact(email="contact@example.com"), contact=openapi.Contact(email="contact@example.com"),