order-processing/Login.py

53 lines
2.0 KiB
Python

from QT import QtWidgets, QT
from User import User
import yaml
class Login_Dialog (QtWidgets.QDialog) :
def __init__ (self, config_file, username = "") :
super ().__init__ ()
cfg = User.Load_Yaml (config_file)
self.users = User (cfg.users)
self.setWindowTitle ("Login")
self.layout = L = QtWidgets.QFormLayout (self)
self.user_name = QtWidgets.QLineEdit ()
self.password = QtWidgets.QLineEdit ()
self.password.setEchoMode (QtWidgets.QLineEdit.Password)
L.addRow ("Benutzername", self.user_name)
L.addRow ("Passwort", self.password)
layout = QtWidgets.QHBoxLayout ()
login = QtWidgets.QPushButton ("Login")
login.setEnabled (False)
self.error = QtWidgets.QLabel ("")
layout.addWidget (self.error)
login.clicked.connect (self._login)
layout.addStretch (10)
layout.addWidget (login)
login.setDefault (True)
L.addRow (layout)
self.login = login
self.password.editingFinished.connect (self._login)
self.user_name.editingFinished.connect(self._check_login_possible)
self.user_name.setText (username)
if username :
self.password.setFocus ()
# end def __init__
def _check_login_possible (self) :
un = self.user_name.text ()
pw = self.password.text ()
self.login.setEnabled ((len (un) >= 3) and (len (pw) >= 3))
# end def _check_login_possible
def _login (self) :
un = self.user_name.text ()
pw = self.password.text ()
pw_ok = self.users.check_password (un, pw, True)
self.login.setEnabled (pw_ok)
if not pw_ok :
self.error.setText ("Passwort falsch")
else :
self.accept ()
# end def _login
# end class Login_Dialog