st-ten-1/src/ui/login/login.py

64 lines
2.3 KiB
Python
Executable File

import platform
import subprocess
import sys
from lib.db import Session, Users
from PyQt5.QtCore import QTimer, pyqtSignal
from PyQt5.QtGui import QKeySequence, QIcon
from PyQt5.QtWidgets import QMessageBox, QShortcut
from ui.widget import Widget
# TESTING
login_count = 0
# /TESTING
class Login(Widget):
wrong_credentials = pyqtSignal()
successful_login = pyqtSignal()
def __init__(self):
super().__init__()
self.welcome_l.setText("BENVENUTO, PER INIZIARE IL COLLAUDO, EFFETTUA L'ACCESSO:")
self.user_cb.addItems(Users.get_usernames())
QShortcut(QKeySequence("Return"), self).activated.connect(self.login_b.click)
QShortcut(QKeySequence("Enter"), self).activated.connect(self.login_b.click)
self.login_b.clicked.connect(self.try_login)
self.ICON_EDIT = QIcon('src/ui/icons/edit.png')
self.psw_edit_b.setIcon(self.ICON_EDIT)
self.psw_edit_b.clicked.connect(self.show_osk)
# TESTING
if "--auto-login-admin" in sys.argv:
self.user_cb.setCurrentText("ADMIN")
self.password_le.setText("123123")
elif "--auto-login-user" in sys.argv or "--test" in sys.argv:
self.user_cb.setCurrentText("USER")
self.password_le.setText("user")
if "--auto-login-admin" in sys.argv or "--auto-login-user" in sys.argv or "--test" in sys.argv:
global login_count
if login_count <= 0:
self.test_timer = QTimer()
self.test_timer.setSingleShot(True)
self.test_timer.timeout.connect(self.login_b.clicked.emit)
self.test_timer.start(500)
# /TESTING
def try_login(self):
user = self.user_cb.currentText().upper()
password = self.password_le.text()
session = Users.login(user, password)
if type(session) is not Session:
self.wrong_credentials.emit()
QMessageBox.critical(None, "Errore login", "Credenziali errate")
else:
# TESTING
global login_count
login_count += 1
# /TESTING
self.successful_login.emit()
def show_osk(self):
self.password_le.setFocus()
if platform.system().lower() == 'windows':
subprocess.Popen(["open_osk.bat"]) # OPEN ON SCREEN KEYBOARD