summaryrefslogtreecommitdiff
path: root/src/app/windowUserInfo.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/windowUserInfo.py')
-rw-r--r--src/app/windowUserInfo.py118
1 files changed, 91 insertions, 27 deletions
diff --git a/src/app/windowUserInfo.py b/src/app/windowUserInfo.py
index 4455dde..181925d 100644
--- a/src/app/windowUserInfo.py
+++ b/src/app/windowUserInfo.py
@@ -1,6 +1,14 @@
+############################################################################
+# #
+# Description: Fenêtre et fonctions permettant de gérer ses infos #
+# #
+############################################################################
+
# https://stackoverflow.com/questions/3077192/get-a-layouts-widgets-in-pyqt
+# Import de PyQt5
+from tkinter import Widget
from PyQt5.QtWidgets import (
QDialog, QGroupBox,
QLabel, QLineEdit,
@@ -8,14 +16,21 @@ from PyQt5.QtWidgets import (
QPushButton, QComboBox,
QMessageBox
)
+# Import des fichiers locaux
from src.database.dbuser import DbUser
from src.database.dbsearch import DbSearch
def core_add_job(jobName: str, jobId: int, listMyJobs: list, layMyJobs: object) -> None:
- """"""
+ """
+ Fonction permettant d'ajouter l'id de l'emploi sélectionné et
+ la ligne avec un bouton pour le retirer.
+ """
+ # Uniquement si le job n'était pas deja sélectionné
if jobId not in listMyJobs:
+ # On le rajoute à la liste des emplois sélectionnés
listMyJobs.append(jobId)
+ # On crée le layout avec ses widgets pour pouvoir le supprimer si on le souhaite
lineMyJobs: object = QHBoxLayout()
labJob: object = QLabel(jobName)
btnRemoveJob: object = QPushButton("Supprimer")
@@ -32,29 +47,37 @@ def core_add_job(jobName: str, jobId: int, listMyJobs: list, layMyJobs: object)
def core_delete_job(layLineJob: object) -> None:
- """"""
- lab: object = layLineJob.itemAt(0).widget()
- lab.deleteLater()
- btn: object = layLineJob.itemAt(2).widget()
- btn.deleteLater()
+ """
+ Fonction permettant de supprimer une ligne de la fenêtre
+ """
+ # On loop a travers chaque item dans le layout et on le supprime
+ for i in range(layLineJob.count()):
+ widget: object = layLineJob.itemAt(i).widget()
+ if widget != None: # Stretch renvoi None
+ widget.deleteLater()
+
+ # Enfin on supprime le layout
layLineJob.deleteLater()
def core_validate(mainWindow: object, dial: object,
- layLines: list, oldJobs: list = None, newJobs: list = None) -> None:
- """"""
- user: object = DbUser(mainWindow = mainWindow)
+ layLines: dict, oldJobs: list = None, newJobs: list = None) -> None:
+ """
+ Fonction validant les informations renseignées et modification
+ de ses dernières dans la BDD avec un méthode de BdUser.
+ """
+ # Instanciation des méthodes pour gérer les utilisateurs
+ user: object = DbUser(mainWindow = mainWindow)
+ # On crée une liste qui vas recevoir les informations renseignées
userInfos: list = []
+ # Pour chaque ligne si cette ligne n'est pas sélectionenr un emploi ou
+ # mes emplois, on ajoute la valeur de l'input à la liste
for i in layLines:
if i != "selectJobs" and i != "myJobs":
lineInput: object = layLines[i].itemAt(2).widget()
userInfos.append(lineInput.text())
- if mainWindow.userStatus == "Pro":
- isPro: bool = True
- else:
- isPro: bool = False
-
+ # Si un champs est vide, on "return" pour arreter la fonction
if "" in userInfos:
QMessageBox.warning(
dial,
@@ -63,6 +86,13 @@ def core_validate(mainWindow: object, dial: object,
)
return
+ # On regarde si l'utilisateur est un Pro ou un Client
+ if mainWindow.userStatus == "Pro":
+ isPro: bool = True
+ else:
+ isPro: bool = False
+
+ # On met à jour les informations de l'utilisateur connecté
user.update_user_infos(userInfos, mainWindow.userId, isPro, oldJobs, newJobs)
QMessageBox.information(
dial,
@@ -72,10 +102,19 @@ def core_validate(mainWindow: object, dial: object,
def window_main(mainWindow: object) -> None:
+ """
+ Fenêtre permettant de modifier ses informations d'utilisateur
+ """
+ # Instanciation des méthodes pour effectuer des recherches
search: object = DbSearch(mainWindow)
- dial: object = QDialog(parent=mainWindow)
+ # Instaciation d'une fenêtre simple
+ dial: object = QDialog(parent=mainWindow)
+ # On défini le titre de cette fenêtre
dial.setWindowTitle("Mes infos")
+ # On récupère les infos de l'utilisateur
infos: list = search.get_user_info_by_userid(mainWindow.userId)
+ # Si il y a déja des infos enregistrées, on les récupère dans deux dictionnaires
+ # en séparants les champs spécifiques aux pros
if infos:
champsClients: dict = {
"Nom": infos[0][1],
@@ -105,11 +144,17 @@ def window_main(mainWindow: object) -> None:
"Description"
]
- layLines: list = {}
+ # On crée un dict qui va recevoir les lignes
+ layLines: dict = {}
+ # Pour chaque élément dans champsClient, que ce soit une liste ou un dict
for i in champsClients:
+ # On crée une ligne avec son QLabel défini selon l'index si c'est un dict,
+ # ou la valeur de l'élément si c'est une liste, et cette index ou cette valeur
+ # sera également l'index du dict des lignes
layLines[i] = QHBoxLayout()
layLines[i].addWidget(QLabel(i))
layLines[i].addStretch()
+ # Si il y a deja des infos, on attribut cette info au QLineEdit, sinon on laisse le champ vierge
if infos:
if i == "Téléphone":
layLines[i].addWidget(QLineEdit(champsClients[i], maxLength=10))
@@ -125,9 +170,11 @@ def window_main(mainWindow: object) -> None:
else:
layLines[i].addWidget(QLineEdit(maxLength=128))
+ # Si l'utilisateur est un pro, on rajoute les champs réservés à ces derniers
if mainWindow.userStatus == "Pro":
+ # On récupère tous les emplois et rajoute les widgets
+ # pour pouvoir ajouter ces derniers
allJobs: object = search.get_job_all()
- laySelectJobs: object = QHBoxLayout()
labSelectJobs: object = QLabel("Les emplois:")
cmbAllJobs: object = QComboBox()
for i in allJobs:
@@ -143,20 +190,32 @@ def window_main(mainWindow: object) -> None:
layMyJobs
)
)
+ # On définie le layout de cette ligne et on le rajoute au dictionnaire des lignes
+ laySelectJobs: object = QHBoxLayout()
laySelectJobs.addWidget(labSelectJobs)
laySelectJobs.addStretch()
laySelectJobs.addWidget(cmbAllJobs)
laySelectJobs.addStretch()
laySelectJobs.addWidget(btnSelectJobs)
layLines["selectJobs"] = laySelectJobs
- #
+ # On récupère les jobs déja sélectionnés pour le pro
myJobs: object = search.get_pro_job_by_proid(mainWindow.userId)
- layMyJobs: object = QVBoxLayout()
+ # On initie une nouvelle liste pour les jobs qui vont étre sélectionnés
newJobs: list = []
+ # On Crée la partie qui recevra les lignes des emplois
+ layMyJobs: object = QVBoxLayout()
+ # Pour chaque job qui avait déja été sélectionné
for i in myJobs:
+ # On crée une une ligne en passant le nom FR, l'id,
+ # la liste des nouveaux jobs et le layout qui recoit ces lignes
core_add_job(i[2], i[0], newJobs, layMyJobs)
- oldJobs: list = newJobs.copy() # Sinon pointer !!!
+
+ # On duplique tout de suite la liste des nouveaux jobs
+ # pour pouvoir faire la diff avant après
+ oldJobs: list = newJobs.copy() # Obligé de "copy" sinon pointer !!!
+ # On donne au dictionnaire des lignes le layout qui recoit les jobs sélectionnés
layLines["myJobs"] = layMyJobs
+ # On ajoute les autres champs réservés aux pros
for i in champsPro:
layLines[i] = QHBoxLayout()
layLines[i].addWidget(QLabel(i))
@@ -166,34 +225,39 @@ def window_main(mainWindow: object) -> None:
else:
layLines[i].addWidget(QLineEdit(maxLength=256))
- layModif: object = QVBoxLayout()
- for i in layLines:
- layModif.addLayout(layLines[i])
-
+ # On crée le bouton pour valider les modifications
btnModif: object = QPushButton("modifer")
btnModif.clicked.connect(
lambda:
- core_validate(
+ core_validate( # Si c'est un pro
mainWindow,
dial,
layLines,
oldJobs,
newJobs
) if mainWindow.userStatus == "Pro"
- else core_validate(
+ else core_validate( # Sinon
mainWindow,
dial,
layLines
)
)
+ # On crée et peuple le layout qui recoit toutes les lignes
+ layModif: object = QVBoxLayout()
+ for i in layLines:
+ layModif.addLayout(layLines[i])
+
+ # On ajoute le bouton
layBtn: object = QHBoxLayout()
layBtn.addStretch()
layBtn.addWidget(btnModif)
layModif.addLayout(layBtn)
- #
+ # On crée et donne au GroupBox le layout des lignes
grpMain: object = QGroupBox("Mes infos")
grpMain.setLayout(layModif)
+ # On crée le layout principal auquel on donne le GroupBox
mainLayout: object = QVBoxLayout()
mainLayout.addWidget(grpMain)
dial.setLayout(mainLayout)
+ # On affiche la fenêtre
dial.show()