56 lines
2.1 KiB
Python
56 lines
2.1 KiB
Python
from QT import QtWidgets, QT
|
|
import schema
|
|
|
|
|
|
class Login_Dialog (QtWidgets.QDialog) :
|
|
|
|
def __init__ (self, username = "") :
|
|
super ().__init__ ()
|
|
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_id = None
|
|
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 ()
|
|
with schema.orm.db_session :
|
|
user = schema.User.get (username = un)
|
|
if not user :
|
|
self.error.setText ("User nicht gefunden")
|
|
else :
|
|
if user.check_password (pw) :
|
|
self.user_id = user.id
|
|
self.accept ()
|
|
else :
|
|
self.error.setText ("Passwort falsch")
|
|
# end def _login
|
|
|
|
# end class Login_Dialog |