gestt/Controllers/BrowseController.py

79 lines
2.3 KiB
Python

# -*-coding:utf8 -*
"""Controleur pour la fenêtre de navigation"""
import sys
import os
DOSSIER_COURRANT = os.path.dirname(os.path.abspath(__file__))
DOSSIER_PARENT = os.path.dirname(DOSSIER_COURRANT)
sys.path.append(DOSSIER_PARENT)
from Controllers.Functions import Functions
from DB.dbLink import DBLink as DB
from Projects.Model import Project
class BrowseController:
"""Classe contenant les fonctions de contrôle utiles à la fenêtre de navigation"""
def __init__(self):
self.link = DB()
def get_projects_list(self):
"""Renvoie la liste des projets ouverts"""
#Requete permettant d'obtenir la liste des ID des projets au statut "ouvert" (1)
##On prépare la liste des ID et la Requete
proj_ids = list()
query = "SELECT IDProj \
FROM projet \
WHERE IDStat = (SELECT IDStat \
FROM statut \
WHERE Statut LIKE('%uvert%'))"
result = self.link.query(query, []).fetchall()
for idproj in result:
proj_ids.append(idproj[0])
#Depuis cette liste, charger chaque projet dans une autre liste
proj_list = list()
for pid in proj_ids:
proj_list.append(Project(pid))
return proj_list
def get_projects_search_results(self, search_query):
"""Renvoie la liste des projets correspondant à une recherche"""
##On prépare la liste des ID et la Requete
proj_ids = list()
query = "SELECT IDProj \
FROM projet \
WHERE Intitulé REGEXP %s \
OR NumDossier REGEXP %s \
AND IDStat = (SELECT IDStat \
FROM statut \
WHERE Statut LIKE('%uvert%')) "
result = self.link.query(query, [search_query, search_query]).fetchall()
for idproj in result:
proj_ids.append(idproj[0])
#Depuis cette liste, charger chaque projet dans une autre liste
proj_list = list()
for pid in proj_ids:
proj_list.append(Project(pid))
return proj_list
############## TESTS #################
test = BrowseController()
liste = test.get_projects_search_results("ou")
for elem in liste:
print(elem.nom)