Files
n3wt-school/Back-End/N3wtSchool/bdd.py
Luc SORIGNET af0cd1c840 chore: Initial Commit
feat: Gestion des inscriptions [#1]
feat(frontend): Création des vues pour le paramétrage de l'école [#2]
feat: Gestion du login [#6]
fix: Correction lors de la migration des modèle [#8]
feat: Révision du menu principal [#9]
feat: Ajout d'un footer [#10]
feat: Création des dockers compose pour les environnements de
développement et de production [#12]
doc(ci): Mise en place de Husky et d'un suivi de version automatique [#14]
2024-11-18 16:06:21 +01:00

86 lines
2.9 KiB
Python

import logging
from django.db.models import Q
from GestionInscriptions.models import FicheInscription, Profil, Eleve
def getAllObjects(_objectName):
result = _objectName.objects.all()
if not result:
logging.warning("Aucun résultat n'a été trouvé - " + _objectName.__name__)
return result
def getObject(_objectName, _columnName, _value):
result=None
try :
result = _objectName.objects.get(**{_columnName: _value})
except _objectName.DoesNotExist:
logging.error("Aucun résultat n'a été trouvé - " + _objectName.__name__ + " (" + _columnName + "=" + str(_value) + ")")
return result
def getObjects(_objectName, _columnName, _value, _reverseCondition=False):
results=None
try :
results = _objectName.objects.filter(**{_columnName: _value}) if _reverseCondition == False else _objectName.objects.filter(~Q(**{_columnName: _value}))
except _objectName.DoesNotExist:
logging.error("Aucun résultat n'a été trouvé - " + _objectName.__name__ + " (" + _columnName + "=" + str(_value) + ")")
return results
def existsProfilInList(objectList, valueToCheck):
result = False
for objectInstance in objectList:
if objectInstance.email == valueToCheck:
result = True
return result
def getProfile(objectList, valueToCheck):
result = None
for objectInstance in objectList:
if objectInstance.email == valueToCheck:
result = objectInstance
return result
def getEleveByCodeFI(_codeFI):
eleve = None
ficheInscriptions_List=getAllObjects(FicheInscription)
for fi in ficheInscriptions_List:
if fi.codeLienInscription == _codeFI:
eleve = fi.eleve
return eleve
def getLastId(_object):
result = 1
try:
result = _object.objects.latest('id').id
except:
logging.warning("Aucun résultat n'a été trouvé - ")
return result
def searchObjects(_objectName, _searchTerm, _excludeState=None):
"""
Recherche générique sur les objets avec possibilité d'exclure certains états
_objectName: Classe du modèle
_searchTerm: Terme de recherche
_excludeState: État à exclure de la recherche (optionnel)
"""
try:
query = _objectName.objects.all()
# Si on a un état à exclure
if _excludeState is not None:
query = query.filter(etat__lt=_excludeState)
# Si on a un terme de recherche
if _searchTerm and _searchTerm.strip():
terms = _searchTerm.lower().strip().split()
for term in terms:
query = query.filter(
Q(eleve__nom__icontains=term) |
Q(eleve__prenom__icontains=term)
)
return query.order_by('eleve__nom', 'eleve__prenom')
except _objectName.DoesNotExist:
logging.error(f"Aucun résultat n'a été trouvé - {_objectName.__name__} (recherche: {_searchTerm})")
return None