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

66 lines
2.4 KiB
Python
Raw Normal View History

2023-08-25 16:51:03 +00:00
import platform
import subprocess
2022-06-01 16:37:19 +00:00
import sys
from components import ArchiveSynchronizer
2022-06-01 16:37:19 +00:00
from lib.db import Session, Users
from PyQt5.QtCore import QTimer, pyqtSignal
2023-08-25 16:51:03 +00:00
from PyQt5.QtGui import QKeySequence, QIcon
2022-06-01 16:37:19 +00:00
from PyQt5.QtWidgets import QMessageBox, QShortcut
from ui.widget import Widget
2022-11-07 15:26:57 +00:00
# TESTING
login_count = 0
# /TESTING
2022-06-01 16:37:19 +00:00
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())
self.archive_synch= ArchiveSynchronizer()
2022-06-01 16:37:19 +00:00
QShortcut(QKeySequence("Return"), self).activated.connect(self.login_b.click)
2022-09-06 15:35:49 +00:00
QShortcut(QKeySequence("Enter"), self).activated.connect(self.login_b.click)
2022-06-01 16:37:19 +00:00
self.login_b.clicked.connect(self.try_login)
2023-08-25 16:51:03 +00:00
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)
2022-06-01 16:37:19 +00:00
# TESTING
if "--auto-login-admin" in sys.argv:
self.user_cb.setCurrentText("ADMIN")
self.password_le.setText("123123")
2022-11-15 16:17:59 +00:00
elif "--auto-login-user" in sys.argv or "--test" in sys.argv:
2022-06-01 16:37:19 +00:00
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:
2022-11-07 15:26:57 +00:00
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)
2022-06-01 16:37:19 +00:00
# /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:
2022-11-07 15:26:57 +00:00
# TESTING
global login_count
login_count += 1
# /TESTING
2022-06-01 16:37:19 +00:00
self.successful_login.emit()
2023-08-25 16:51:03 +00:00
def show_osk(self):
self.password_le.setFocus()
if platform.system().lower() == 'windows':
subprocess.Popen(["open_osk.bat"]) # OPEN ON SCREEN KEYBOARD