diff options
| author | Debulois <quentin@debulois.fr> | 2022-05-01 23:24:19 +0200 |
|---|---|---|
| committer | Debulois <quentin@debulois.fr> | 2022-05-01 23:24:19 +0200 |
| commit | 809f5c2c7ce0bdf05287c6f1b5ec1330efb0c469 (patch) | |
| tree | 786477393b2608d3dd118d3e9ae4e57380804b5a /src/app/mainRegister.py | |
| parent | 1eaf21fd423e5dedf1ed4361b0e9b6cbbcfc9fa0 (diff) | |
Ajout du système pour mandater et mise en page des documents
Diffstat (limited to 'src/app/mainRegister.py')
| -rw-r--r-- | src/app/mainRegister.py | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/src/app/mainRegister.py b/src/app/mainRegister.py new file mode 100644 index 0000000..ce9486f --- /dev/null +++ b/src/app/mainRegister.py @@ -0,0 +1,177 @@ + +import re +from PyQt5.QtWidgets import ( + QPushButton, QHBoxLayout, + QGroupBox, QLabel, + QLineEdit, QWidget, + QVBoxLayout, QComboBox, + QGridLayout, QMessageBox +) +from src.app import mainLogin, mainHome, mainLogout +from src.database.dbuser import DbUser + + +def core_register(mainWindow: object, email: str, password: str, userStatus: str) -> None: + """""" + dbuser: object = DbUser(mainWindow) + regNumb: str = "[0-9]" + regUpper: str = "[A-Z]" + regSpecial: str = "[`!@#$%^&*()_+\-=\[\]{};':\"\\|,.<>\/?~µ°€£]" + regEmail: str = "^[a-z0-9._-]+@[a-z0-9-]+\.[a-z]+" + # Si vide + if not email: + QMessageBox.warning( + mainWindow, + "Email invalide", + "Veuillez renseigner un email" + ) + return + + if not password: + QMessageBox.warning( + mainWindow, + "Mot de passe invalide", + "Veuillez renseigner un mot de passe" + ) + return + + if userStatus == None: + QMessageBox.warning( + mainWindow, + "Mauvais rôle", + "Veuillez selectionner un rôle" + ) + return + + # les regex + if not re.fullmatch(regEmail, email): + QMessageBox.warning( + mainWindow, + "Email invalid", + "Email non conforme" + ) + return + + if len(password) < 8\ + or not re.search(regNumb, password)\ + or not re.search(regUpper, password)\ + or not re.search(regSpecial, password): + QMessageBox.warning( + mainWindow, + "Mot de passe invalide", + ("Le mot de passe doit avoir:\n" + "-Au moins 8 characters\n" + "-Une majuscule\n" + "-Un chiffre\n" + "-Un character spécial") + ) + return + + # si email deja présent + if dbuser.check_exist_email(email): + QMessageBox.warning( + mainWindow, + "Email invalid", + "Email déja utilisé" + ) + return + + succes: int = dbuser.register_user(email, password, userStatus) + if succes: + QMessageBox.information( + mainWindow, + "Inscription", + "Inscription réussie!" + ) + mainHome.window_main(mainWindow) + else: + QMessageBox.warning( + mainWindow, + "Erreur bdd", + "Erreur lors de l'inscritpion" + ) + + +def window_main(mainWindow: object) -> None: + """""" + if not mainWindow.userConnected: + connexionState: object = QLabel("Non connecté.") + else: + connexionState: object = QLabel( + f"Connecté: {mainWindow.userEmail} - {mainWindow.userStatus}" + ) + + btnAccueil: object = QPushButton("Accueil") + btnAccueil.clicked.connect(lambda: mainHome.window_main(mainWindow)) + # + if not mainWindow.userConnected: + btnConnexion: object = QPushButton("Connexion") + btnConnexion.clicked.connect(lambda: mainLogin.window_main(mainWindow)) + else: + btnDeconnexion: object = QPushButton("Déconnexion") + btnDeconnexion.clicked.connect( + lambda: [ + mainLogout.core_logout(mainWindow), + mainHome.window_main(mainWindow, True) + ] + ) + + layoutUser: object = QHBoxLayout() + layoutUser.addWidget(btnAccueil) + layoutUser.addStretch() + if not mainWindow.userConnected: + layoutUser.addWidget(btnConnexion) + else: + layoutUser.addWidget(btnDeconnexion) + + grpUtilisateur: object = QGroupBox("Gestion de l'utilisateur") + grpUtilisateur.setLayout(layoutUser) + # + labMail: object = QLabel("Email") + leditMail: object = QLineEdit(maxLength=128) + labPassword: object = QLabel("Mot de passe") + leditPassword: object = QLineEdit(maxLength=128) + leditPassword.setEchoMode(QLineEdit.Password) + labStatus: object = QLabel("Rôle") + comboStatus: object = QComboBox() + comboStatus.addItem("Admin", 0) + comboStatus.addItem("Pro", 1) + comboStatus.addItem("Client", 2) + # + btnRegister: object = QPushButton("S'inscrire") + btnRegister.clicked.connect( + lambda: core_register( + mainWindow, + leditMail.text(), + leditPassword.text(), + comboStatus.currentData() + ) + ) + # + LayoutInfoConnexion: object = QGridLayout() + LayoutInfoConnexion.addWidget(labMail, 0, 0) + LayoutInfoConnexion.addWidget(leditMail, 0, 1) + LayoutInfoConnexion.addWidget(labPassword, 1, 0) + LayoutInfoConnexion.addWidget(leditPassword, 1, 1) + LayoutInfoConnexion.addWidget(labStatus, 2, 0) + LayoutInfoConnexion.addWidget(comboStatus, 2, 1) + LayoutInfoConnexion.addWidget(btnRegister, 3, 1) + # + layoutGroupConnexion: object = QHBoxLayout() + layoutGroupConnexion.addStretch() + layoutGroupConnexion.addLayout(LayoutInfoConnexion) + layoutGroupConnexion.addStretch() + grpConnexion: object = QGroupBox("Inscription") + grpConnexion.setLayout(layoutGroupConnexion) + # + layoutMain: object = QVBoxLayout() + layoutMain.addWidget(connexionState) + layoutMain.addWidget(grpUtilisateur) + layoutMain.addStretch() + layoutMain.addWidget(grpConnexion) + layoutMain.addStretch() + # + mainWindow.mainWidget.deleteLater() + mainWindow.mainWidget = QWidget() + mainWindow.mainWidget.setLayout(layoutMain) + mainWindow.setCentralWidget(mainWindow.mainWidget) |
