Beispiel #1
0
class login(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.loginw = Ui_Login()
        self.loginw.setupUi(self)

        self.connect(self.loginw.buttonBox, QtCore.SIGNAL('accepted()'),
                     self.ingresa)

    def ingresa(self):
        user = self.loginw.userEdit.text()
        passw = self.loginw.passEdit.text()

        db = QtSql.QSqlDatabase.addDatabase("QPSQL")
        db.setHostName("localhost")
        db.setDatabaseName("escuela")
        db.setUserName(user)
        db.setPassword(passw)
        db.setPort(5432)

        if db.open():
            self.principal = principal()
            self.principal.show()
            self.hide()
        else:
            QtGui.QMessageBox.warning(
                self, u"Acceso incorrecto",
                u"El usuario y/o la contraseña ingresada no son correctos, revisalos",
                QtGui.QMessageBox.Ok)
Beispiel #2
0
 def generate_login(self):
     self.login_wid = qtw.QWidget(self)
     self.login = Ui_Login()
     self.login.setupUi(self.login_wid)
     self.login.submit.clicked.connect(self.validate_password)
     self.main_wid.addWidget(self.login_wid)
     self.login.username.setFocus()
Beispiel #3
0
 def __init__(self, home, mydb_helper):
     QMainWindow.__init__(self)
     self.ui = Ui_Login()
     self.ui.setupUi(self)
     self.setWindowTitle("LogIn")
     self.home = home
     self.db_helper = mydb_helper
Beispiel #4
0
 def open_login(self):
     from login import Ui_Login
     self.window_login = QtWidgets.QMainWindow()
     self.login_gui = Ui_Login()
     self.login_gui.setupUi(self.window_login)
     self.window_login.show()
     self.window.close()
Beispiel #5
0
class  LoginWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Login()
        self.ui.setupUi(self)
        QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.button_click)
    def button_click(self):
        global configWin
        global session
        global myapp
        global mail
        pop3Name=str(configWin.ui.lineEdit.text())
        smtpName=str(configWin.ui.lineEdit_2.text())
        userName=str(self.ui.lineEdit.text())
        passwd=str(self.ui.lineEdit_2.text())
        session=Session([pop3Name, smtpName, userName, passwd])
        resultcode=session.sessionLogin()
        if resultcode==0:
            lastaccount=[pop3Name, smtpName, userName, passwd]
            init.writein(lastaccount)
            mail=MyMail(session)
            myapp = MyMailBox()
            myapp.show()
            myapp.ui.menubar.addMenu(lastaccount[2]).addAction(myapp.ui.logout)
            self.close()
Beispiel #6
0
class login(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.loginw = Ui_Login()
        self.loginw.setupUi(self)
        
        self.connect(self.loginw.buttonBox, QtCore.SIGNAL('accepted()'), self.ingresa)
        
    def ingresa(self):
        user = self.loginw.userEdit.text()
        passw = self.loginw.passEdit.text()
        
        db = QtSql.QSqlDatabase.addDatabase("QPSQL")
        db.setHostName("localhost");
        db.setDatabaseName("escuela");
        db.setUserName(user);
        db.setPassword(passw);
        db.setPort(5432);
                       
        if db.open():
            self.principal = principal()
            self.principal.show()
            self.hide()
        else:
            QtGui.QMessageBox.warning(self, u"Acceso incorrecto",
                                      u"El usuario y/o la contraseña ingresada no son correctos, revisalos",QtGui.QMessageBox.Ok)
Beispiel #7
0
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.loginw = Ui_Login()
        self.loginw.setupUi(self)

        self.connect(self.loginw.buttonBox, QtCore.SIGNAL('accepted()'),
                     self.ingresa)
Beispiel #8
0
 def __init__(self):
     QtGui.QDialog.__init__(self)
     self.user_access_level = -1
     self.ui = Ui_Login()
     self.ui.setupUi(self)
     self.ui.pushButton_2.clicked.connect(self.handleLogin)
     self.ui.pushButton.clicked.connect(self.close)
Beispiel #9
0
 def __init__(self, parent=None):
     QtGui.QDialog.__init__(self, parent)
     self.p = parent
     self.ui = Ui_Login()
     self.ui.setupUi(self)
     self.connect_ctrls()
     if self.p.settings.is_configured() is True:
         self.ui.username.setText(self.p.domains.config['user']['username'])
         self.ui.password.setText(self.p.domains.config['user']['password'])
Beispiel #10
0
class Form(Ui_Login):
    def __init__(self):
        super(Form, self).__init__()
        self.showAcceuil()
        """self.browser = QTextBrowser()
        self.setWindowTitle('Just a dialog')"""

    def showAcceuil(self):
        self.showAcceuil = QtWidgets.QMainWindow()
        self.ui = Ui_Login()
        self.ui.setupUi(self.showAcceuil)
        # Login.hide()
        self.showAcceuil.show()
 def __init__(self, parent=None):
     QtGui.QDialog.__init__(self, parent)
     self.p = parent
     self.ui = Ui_Login()
     self.ui.setupUi(self)
     self.connect_ctrls()
     if self.p.settings.is_configured() is True:
         self.ui.username.setText(self.p.domains.config['user']['username'])
         self.ui.password.setText(self.p.domains.config['user']['password'])
Beispiel #12
0
class FormLoginUser(QtGui.QDialog):

	users = [
		("admin", "1234"),
		("asd", "123")]

	def __init__(self, parent = None):
		QtGui.QDialog.__init__(self, parent)
		self.ui = Ui_Login()
		self.ui.setupUi(self)

		self.ui.buttonLogin.clicked.connect(self.in_acces)
		
	
	def in_acces(self):
		user = self.ui.lineUser.text()
		password = self.ui.linePass.text()

		acces = False
		for i, data in enumerate(self.users):
			if data[0] == user:
				if data[1] == password:
					acces = True
					break

		if acces:
			accesQMessageBox = QtGui.QMessageBox()
			accesQMessageBox.setWindowTitle("Ingreso")
			accesQMessageBox.setText(u"Acceso Aceptado")
			accesQMessageBox.exec_()
			self.main = Main()

		else:
			accesQMessageBox = QtGui.QMessageBox()
			accesQMessageBox.setWindowTitle("ERROR")
			accesQMessageBox.setText(u"""Acceso Denegado
				\nIntente nuevamente""")
			accesQMessageBox.exec_()
Beispiel #13
0
class LoginWindow(QMainWindow):
    def __init__(self, home, mydb_helper):
        QMainWindow.__init__(self)
        self.ui = Ui_Login()
        self.ui.setupUi(self)
        self.setWindowTitle("LogIn")
        self.home = home
        self.db_helper = mydb_helper

    def manager_init(self, manager_id):
        self.home.main_Ui.bk_info.horizontalHeader().setSectionResizeMode(
            QHeaderView.Stretch)
        info = self.home.main_Ui.manager_info
        manager = self.db_helper.get_manager_info(manager_id)
        idItem = QTableWidgetItem(str(manager["manager_id"]))
        ageItem = QTableWidgetItem(str(manager["manager_age"]))
        nameItem = QTableWidgetItem(manager["manager_name"])
        phoneItem = QTableWidgetItem(manager["manager_phone"])
        info.setItem(0, 0, idItem)
        info.setItem(1, 0, nameItem)
        info.setItem(2, 0, ageItem)
        info.setItem(3, 0, phoneItem)
        items = [idItem, ageItem, nameItem, phoneItem]
        for item in items:
            item.setTextAlignment(Qt.AlignCenter)

    def login(self):
        manager_id = self.ui.ID.text()
        passwd = self.ui.passwd.text()
        log = self.db_helper.check_login(manager_id, passwd)
        if log:
            self.manager_init(manager_id)
            self.home.show()
            self.close()
        else:
            self.ui.prompt.insert("wrong password!")
Beispiel #14
0
class UIcontrol():
    def __init__(self, parent=None):
        self.ui_login = Ui_Login()
        self.ui_main = Ui_Main()

    def ProcessesSignal(self, list, number):
        if number == 1:
            self.ui_login.updateImageUi(list[0], list[1], list[2])
            self.ui_login.show()
        elif number == 2:
            self.ui_login.updateLabelUi(list[0])
        elif number == 3:

            self.ui_main.initUserData(list)
            self.ui_login.hide()
            self.ui_main.show()

    def MessageSignal(self, list):
        self.ui_main.receiveMsg(list)
Beispiel #15
0
	def __init__(self, parent = None):
		QtGui.QDialog.__init__(self, parent)
		self.ui = Ui_Login()
		self.ui.setupUi(self)

		self.ui.buttonLogin.clicked.connect(self.in_acces)
Beispiel #16
0
 def __init__(self, parent=None):
     self.ui_login = Ui_Login()
     self.ui_main = Ui_Main()
class Login_Window(QtGui.QDialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        self.user_access_level = -1
        self.ui = Ui_Login()
        self.ui.setupUi(self)
        self.ui.pushButton_2.clicked.connect(self.handleLogin)
        self.ui.pushButton.clicked.connect(self.close)
        self.name = '' #keep track of user name

    def handleLogin(self):
        # if cannot connect to database showing error window
        if not self.conn():
            QtGui.QMessageBox.warning(
                self, 'Error', 'database contecting error')
        
        # create sql query to retrieve username, password, accesslevel
        query = QSqlQuery()
        query.exec_("SELECT User_name, User_password, Access_level FROM Account")

        # get username and password from gui
        input_name = self.ui.lineEdit.text()
        input_pass = self.ui.lineEdit_2.text() 

        #this flag for detect weather the username and password are valid
        self.flag = False
        
        while query.next():
            # get username, password and accesslevel from database
            user_name = str(query.value(0))
            user_password = str(query.value(1))
            user_access_level = int(query.value(2))
            
            # campare above information to the user inputted information
            if (user_name == input_name and user_password == input_pass):
                # if valid user found, set flag true
                self.flag = True
                
                self.name = user_name

                #check for default password
                if (user_password == "rcdancearts"):
                    self.default_msg = "Remember to change your password"
                    self.default_reply = QtGui.QMessageBox.information(self, 'Change Password', 
                        self.default_msg, QtGui.QMessageBox.Ok)
                    
                
                # save personal information once the valid information found 
                self.user_access_level = user_access_level
                #test.....
                self.close()
                
                
        # if user not found, show error message.              
        if not self.flag:
            QtGui.QMessageBox.warning(
                self, 'Error', 'Invalid user or password')
            self.ui.lineEdit_2.clear()

    # set up database connection
    def getAccessLevel(self):
        return self.user_access_level
    def getUsername(self):
        return self.name
    def conn(self):
        self.db = QSqlDatabase.addDatabase("QMYSQL")
        self.db.setHostName("services1.mcs.sdsmt.edu")
        self.db.setDatabaseName("db_dancesoft_f15")
        self.db.setUserName("dancesoft_f15")
        self.db.setPassword("DanceSoft")
        return self.db.open()
class MyLogin(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.p = parent
        self.ui = Ui_Login()
        self.ui.setupUi(self)
        self.connect_ctrls()
        if self.p.settings.is_configured() is True:
            self.ui.username.setText(self.p.domains.config['user']['username'])
            self.ui.password.setText(self.p.domains.config['user']['password'])
        
    def connect_ctrls(self):
        self.ui.Buttons.button(self.ui.Buttons.Save).clicked.connect(self.try_login)
        self.ui.Buttons.button(self.ui.Buttons.Cancel).clicked.connect(self.close)
    
    def set_status(self, text, color):
        self.ui.status.setText(str(text))
        self.ui.status.setStyleSheet("#status { color : %s; }" % str(color));
    
        
    def start_thread(self):
        self.ui.Buttons.button(self.ui.Buttons.Save).setEnabled(False)
        self.ui.Buttons.button(self.ui.Buttons.Cancel).setEnabled(False)
        self.loginT = authThread(self.usr, self.psw)
        self.set_status("Authenticatig...", "blue")
        self.loginT.begin()
        self.connect(self.loginT, QtCore.SIGNAL("loginEvent"), self.h_rsp)
    
    
    def try_login(self):
        self.usr = self.ui.username.text()
        self.psw = self.ui.password.text()
        
        if self.p.settings.is_configured() is True:
            old_u = self.p.domains.config['user']['username']
            old_p = self.p.domains.config['user']['password']
            if str(self.usr) != str(old_u) or str(self.psw) != str(old_p):
                self.start_thread()
            else:
                self.close()
        else:
            self.start_thread()
        
    
    def h_rsp(self, rsp):
        if rsp == True:
            data = {'user': {'username': str(self.usr), 'password': str(self.psw)}}
            try:
                self.set_status("Success", "green")
                self.p.settings.save_cfg(data)
                self.p.domains = updater.Domains()
                self.set_status("Retrieving domain list, please wait...", "green")
                self.p.dom_data = self.p.domains.get_domains()
                self.close()
            except:
                self.set_status("Failed to write config :(", "red")
        else:
            self.ui.Buttons.button(self.ui.Buttons.Save).setEnabled(True)
            self.ui.Buttons.button(self.ui.Buttons.Cancel).setEnabled(True)
            txt = self.p.get_code_text(rsp)
            self.set_status(str(txt), "red")
        self.emit(QtCore.SIGNAL("userChanged"))


    def keyPressEvent(self, e):
        if e.key() == QtCore.Qt.Key_Escape:
            if self.p.settings.is_configured() is False:
                sys.exit()
            else:
                self.close()


    def closeEvent(self, event):
        if self.p.settings.is_configured() is False:
            sys.exit()
        else:
            event.accept()
Beispiel #19
0
 def __init__(self):
     QtGui.QWidget.__init__(self)
     self.loginw = Ui_Login()
     self.loginw.setupUi(self)
     
     self.connect(self.loginw.buttonBox, QtCore.SIGNAL('accepted()'), self.ingresa)
 def log(self):
     Login = QtWidgets.QDialog()
     ui = Ui_Login()
     ui.setupUi(Login)
     Login.show()
     Login.exec_()
Beispiel #21
0
class Ui_Register(object):
    def __init__(self):
        super(Ui_Register, self).__init__()

        # dane do logowania do bazy danych
        self.db_host = 'packy.db.elephantsql.com'
        self.db_user = '******'
        self.db_name = 'htcazxfd'
        self.db_port = 5432
        self.db_psswd = 'UE5AaV5whqnbKyD5jL9MusNCvV1yaX7T'
        self.conn = None

    def setupUi(self, MainWindow):
        self.window = MainWindow
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(342, 390)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.register_username_label = QtWidgets.QLabel(self.centralwidget)
        self.register_username_label.setGeometry(QtCore.QRect(10, 10, 181, 17))
        self.register_username_label.setObjectName("register_username_label")
        self.register_password_label = QtWidgets.QLabel(self.centralwidget)
        self.register_password_label.setGeometry(QtCore.QRect(10, 80, 81, 17))
        self.register_password_label.setObjectName("register_password_label")
        self.register_username_input = QtWidgets.QLineEdit(self.centralwidget)
        self.register_username_input.setGeometry(QtCore.QRect(10, 40, 201, 25))
        self.register_username_input.setObjectName("register_username_input")
        self.register_password_input = QtWidgets.QLineEdit(self.centralwidget)
        self.register_password_input.setGeometry(QtCore.QRect(
            10, 110, 201, 25))
        self.register_password_input.setObjectName("register_password_input")
        self.register_mail_label = QtWidgets.QLabel(self.centralwidget)
        self.register_mail_label.setGeometry(QtCore.QRect(10, 150, 121, 17))
        self.register_mail_label.setObjectName("register_mail_label")
        self.register_mail_input = QtWidgets.QLineEdit(self.centralwidget)
        self.register_mail_input.setGeometry(QtCore.QRect(10, 180, 201, 25))
        self.register_mail_input.setObjectName("register_mail_input")
        self.register_date_of_birth_label = QtWidgets.QLabel(
            self.centralwidget)
        self.register_date_of_birth_label.setGeometry(
            QtCore.QRect(10, 220, 211, 17))
        self.register_date_of_birth_label.setObjectName(
            "register_date_of_birth_label")
        self.register_date_of_birth_input = QtWidgets.QDateEdit(
            self.centralwidget)
        self.register_date_of_birth_input.setGeometry(
            QtCore.QRect(10, 250, 110, 25))
        self.register_date_of_birth_input.setObjectName(
            "register_date_of_birth_input")
        self.register_button = QtWidgets.QPushButton(self.centralwidget)
        self.register_button.setGeometry(QtCore.QRect(100, 290, 151, 31))
        self.register_button.setObjectName("register_button")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 342, 22))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        self.register_button.clicked.connect(self.register_new_user)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Rejestracja"))
        self.register_username_label.setText(
            _translate("MainWindow", "Podaj nazwę użytkownika"))
        self.register_password_label.setText(
            _translate("MainWindow", "Podaj hasło"))
        self.register_mail_label.setText(
            _translate("MainWindow", "Podaj swój email"))
        self.register_date_of_birth_label.setText(
            _translate("MainWindow", "Podaj datę swojego urodzenia"))
        self.register_button.setText(_translate("MainWindow", "Zarejestruj"))
        self.register_date_of_birth_input.setDisplayFormat(
            _translate("MainWindow", "dd-MM-yyyy"))

    def register_new_user(self):
        username = self.register_username_input.text()
        password = self.register_password_input.text()
        mail = self.register_mail_input.text()
        date_of_birth = self.register_date_of_birth_input.text()
        try:
            self.conn = pg2.connect(host=self.db_host,
                                    database=self.db_name,
                                    user=self.db_user,
                                    password=self.db_psswd,
                                    port=self.db_port)
            c = self.conn.cursor()
            c.execute("""
                    INSERT INTO users (username, psswd, email, date_of_birth, amount, account_creation)
                    VALUES ('{}', '{}', '{}', '{}', 0, CURRENT_DATE)
            """.format(username, password, mail, date_of_birth))
            c.close()
            self.conn.commit()
            self.conn.close()
            self.register_success()
        except pg2.errors.RaiseException:
            self.register_error()

    def register_success(self):
        msg = QMessageBox()
        msg.setWindowTitle("Potwierdzenie")
        msg.setText("Udało Ci się zarejestrować do biblioteki gier")
        msg.setIcon(QMessageBox.Information)
        msg.setStandardButtons(QMessageBox.Ok)

        msg.buttonClicked.connect(self.open_login)
        x = msg.exec_()

    def register_error(self):
        _translate = QtCore.QCoreApplication.translate
        msg = QMessageBox()
        msg.setWindowTitle("Błąd rejestracji")
        msg.setText("Nie udało Ci się zarejestrować do biblioteki gier")
        msg.setIcon(QMessageBox.Critical)
        msg.setStandardButtons(QMessageBox.Retry)

        self.register_date_of_birth_input.setDate(QtCore.QDate(2000, 1, 1))
        self.register_username_input.clear()
        self.register_password_input.clear()
        self.register_mail_input.clear()
        x = msg.exec_()

    def open_login(self):
        from login import Ui_Login
        self.window_login = QtWidgets.QMainWindow()
        self.login_gui = Ui_Login()
        self.login_gui.setupUi(self.window_login)
        self.window_login.show()
        self.window.close()
Beispiel #22
0
class MainWindow(qtw.QMainWindow):
    def __init__(self):
        super().__init__()
        self.backend = BackendStuff()
        self.setWindowTitle("ExamSim 9000")
        self.resize(900, 600)

        self.main_wid = qtw.QStackedWidget(self)
        self.generate_login()
        self.setCentralWidget(self.main_wid)
        self.show()

    def generate_login(self):
        self.login_wid = qtw.QWidget(self)
        self.login = Ui_Login()
        self.login.setupUi(self.login_wid)
        self.login.submit.clicked.connect(self.validate_password)
        self.main_wid.addWidget(self.login_wid)
        self.login.username.setFocus()

    def generate_dash(self):
        self.dashwid = qtw.QWidget(self)
        self.dash = Ui_Dash()
        self.dash.setupUi(self.dashwid)
        name = self.backend.get_name(self.currentid)
        self.dash.welcome.setText(f"Welcome, {name}")
        self.gen_dash_test_list()
        self.gen_score_dash()
        self.gen_all_scores()
        self.main_wid.addWidget(self.dashwid)

    def gen_all_scores(self):
        resulttuples = self.backend.fetchscores(self.currentid)
        rbox = qtw.QVBoxLayout()
        rwid = qtw.QWidget(self)
        rwid.setLayout(rbox)
        contscroll = qtw.QScrollArea(self)
        contscroll.setWidget(rwid)
        rwid.setObjectName("rwid")
        self.dash.allscoreslayout.addWidget(rwid)
        tests = [ResultListing(*a) for a in resulttuples]

        for i, result in enumerate(tests):
            x = Ui_ResultListing()
            rw = qtw.QWidget(self)
            x.setupUi(rw)
            x.score.setText(f"{result.score}/{result.total}")
            #self.tuis.append(tw)
            result.ui = x
            x.testname.setText(f"{result.testname} — {result.subjectname} ")
            x.viewDetails.clicked.connect(
                lambda annoyingbug, result=result: self.view_test_results(
                    result.testcode, f"{result.score}/{result.total}", self.
                    currentid))
            #x.attempt.clicked.connect(lambda annoyingbug, test=result: self.goto_test(test.testcode))
            rbox.addWidget(rw)
            rbox.addSpacing(30)

        rwid.setStyleSheet("#rwid { background-color: #f7f7f7;}")
        self.dash.tests.setAlignment(Qt.AlignCenter)
        rbox.setAlignment(Qt.AlignCenter)

    def gen_score_dash(self):
        scrwid = qtw.QWidget()
        self.score_dash = Ui_scoredash()
        self.score_dash.setupUi(scrwid)
        pg.setConfigOption('background', 'w')
        pg.setConfigOption('foreground', 'k')
        pg.setConfigOption('antialias', True)
        graphWidget = pg.PlotWidget()

        scores, testnames = self.backend.get_graph(self.currentid)

        ticks = list(enumerate(testnames))
        pen = pg.mkPen(color=(80, 80, 80), width=1.5)
        graphWidget.plot([x[0] for x in ticks],
                         scores,
                         pen=pen,
                         symbol='o',
                         size=1)
        graphWidget.getPlotItem().getAxis('bottom').setTicks([ticks])
        graphWidget.setYRange(0, 100)
        graphWidget.setMouseEnabled(True, False)

        lt = self.backend.get_last_test(self.currentid)
        if lt is not None:
            tcode, tname, tscore, total = lt
            self.score_dash.testname.setText(tname)
            self.score_dash.score.setText(f"{tscore}/{total}")
            self.score_dash.viewDetails.clicked.connect(
                lambda ab, tcode=tcode: self.view_test_results(
                    tcode, f"{tscore}/{total}", self.currentid))
        else:
            self.score_dash.testname.setText("No tests available")
            self.score_dash.score.setText("-")
            self.score_dash.viewDetails.setDisabled(True)

        overall, subjects = self.backend.get_avgs(self.currentid)
        self.score_dash.overallavg.setText(f"{overall*100:.2f}%")
        namefont = QFont("Segoe UI", 16)
        pfont = QFont("Segoe UI Light", 14)
        for subject in subjects:
            sname = qtw.QLabel(f"{subject[0]}", self)
            sname.setFont(namefont)
            sname.setSizePolicy(qtw.QSizePolicy.Preferred,
                                qtw.QSizePolicy.Fixed)
            p = qtw.QLabel(f"{subject[1]*100:.2f}%", self)
            p.setStyleSheet("padding: 5px")
            p.setFont(pfont)
            p.setSizePolicy(qtw.QSizePolicy.Preferred, qtw.QSizePolicy.Fixed)
            p.setMinimumHeight(40)
            sname.setMinimumHeight(40)
            self.score_dash.avgs.layout().addRow(sname, p)

        self.score_dash.graphcontainer.addWidget(graphWidget)
        self.dash.scoredashlayout.addWidget(scrwid)
        self.dash.scoretab.setCurrentIndex(0)

    def view_test_results(self, testcode, score, sid):
        self.generate_test(testcode)
        qcodes = [question.qcode for question in self.questions]
        choices = self.backend.get_choices(testcode, sid, qcodes)

        # the lord alone can save us now
        for question, choice in zip(self.questions, choices):
            qui = question.ui
            ctext = '<font color=\"green\">Correct</font>'
            if question.correct == 1:
                qui.aans.setText(ctext)
            elif question.correct == 2:
                qui.bans.setText(ctext)
            elif question.correct == 3:
                qui.cans.setText(ctext)
            elif question.correct == 4:
                qui.dans.setText(ctext)

            if question.correct == choice:
                question.uiwid.setStyleSheet(
                    question.uiwid.styleSheet() +
                    "#question{background-color: #e6f9e5;}")
            else:
                question.uiwid.setStyleSheet(
                    question.uiwid.styleSheet() +
                    "#question{background-color: #fcd4d6;}")

            s = """
            #a:disabled,#b:disabled,#c:disabled,#d:disabled{
                color: #000000;
            }
            QRadioButton::indicator::checked{
                 border: 1px solid white; border-radius: 6px; background-color: #333; width: 10px; height: 10px;}
            """

            qui.a.setStyleSheet(s)
            qui.b.setStyleSheet(s)
            qui.c.setStyleSheet(s)
            qui.d.setStyleSheet(s)

            if choice == 1: qui.a.setChecked(True)
            elif choice == 2: qui.b.setChecked(True)
            elif choice == 3: qui.c.setChecked(True)
            elif choice == 4: qui.d.setChecked(True)

            qui.a.setDisabled(True)
            qui.b.setDisabled(True)
            qui.c.setDisabled(True)
            qui.d.setDisabled(True)

        self.form.submit.disconnect()  # disconnect from submit
        self.form.submit.setText("Back")
        self.form.submit.clicked.connect(self.return_to_dash)

        self.form.testheader.setText(self.form.testheader.text() + "  —  " +
                                     score)
        self.main_wid.setCurrentWidget(self.form)

    def gen_dash_test_list(self):
        testtuples = self.backend.fetchtests(self.currentid)
        tbox = qtw.QVBoxLayout()
        twid = qtw.QWidget(self)
        twid.setLayout(tbox)
        self.dash.tests.setWidget(twid)
        twid.setObjectName("twid")
        self.tests = [TestListing(*a) for a in testtuples]

        for i, test in enumerate(self.tests):
            if not test.attempted:
                x = Ui_TestListing()
                tw = qtw.QWidget(self)
                x.setupUi(tw)
                x.testname.setText(f"{test.testname} — {test.subjectname} ")
                x.questioncount.setText(f"{test.questions} questions")
                x.time.setText(f"{test.time} minutes")
                #self.tuis.append(tw)
                test.ui = x
                x.attempt.clicked.connect(lambda annoyingbug, test=test: self.
                                          goto_test(test.testcode))
                tbox.addWidget(tw)
                tbox.addSpacing(30)

        twid.setStyleSheet("#twid { background-color: #f7f7f7;}")
        self.dash.tests.setAlignment(Qt.AlignCenter)
        tbox.setAlignment(Qt.AlignCenter)

    def goto_test(self, testcode):
        self.generate_test(testcode)
        self.main_wid.setCurrentWidget(self.form)

    def generate_admin_dash(self):
        self.dashwid = qtw.QWidget(self)
        self.dash = Ui_DashAdmin()
        self.dash.setupUi(self.dashwid)
        self.main_wid.addWidget(self.dashwid)
        self.generate_admin_tests()

    def modify_test(self, testcode: int):
        testname, questiontuples = self.backend.get_test_details(testcode)
        self.questions = []
        self.testcode = testcode
        for question in questiontuples:
            self.questions.append(
                Question(
                    # q,a,b,c,d,qcode,correct
                    *[str(x) for x in question[1:6]],
                    question[0],
                    question[6]))

        subjects = self.backend.get_subjects()
        self.creator = FormCreator(self.questions, subjects)
        self.subjectcode = self.backend.get_subject_code(testcode)
        self.creator.subjectchooser.setCurrentIndex(
            self.creator.subjectchooser.findData(self.subjectcode))
        self.creator.addquestion.clicked.connect(
            lambda: self.creator.add_question(
                Question("", "", "", "", "", 0, -1)))
        self.creator.submit.clicked.connect(self.submit_new_test)
        self.creator.testheader.setText(testname)
        self.main_wid.addWidget(self.creator)
        self.main_wid.setCurrentWidget(self.creator)

    def submit_new_test(self):
        subjectcode = self.creator.subjectchooser.currentData()
        testname = self.creator.testheader.text()
        testcode = self.testcode
        questions = []
        question: Question = None
        for question in self.questions:
            qui: Ui_questiontemp = question.ui
            optcode = None
            if qui.a.isChecked(): optcode = 1
            elif qui.b.isChecked(): optcode = 2
            elif qui.c.isChecked(): optcode = 3
            elif qui.d.isChecked(): optcode = 4
            questions.append(
                Question(qui.questiontext.text(), qui.atext.text(),
                         qui.btext.text(), qui.ctext.text(), qui.dtext.text(),
                         question.qcode, optcode))
        self.backend.submit_test_creator(subjectcode, testcode, testname,
                                         questions)
        self.return_to_admin_dash()

    def create_new_test(self):
        self.questions = [
            Question("", '', '', '', '', 0, -1),
        ]
        self.testcode = 0
        subjects = self.backend.get_subjects()
        self.creator = FormCreator(self.questions, subjects)
        self.creator.addquestion.clicked.connect(
            lambda: self.creator.add_question(
                Question("", "", "", "", "", 0, -1)))
        self.main_wid.addWidget(self.creator)
        self.main_wid.setCurrentWidget(self.creator)
        self.creator.submit.clicked.connect(self.submit_new_test)

    def finish_update_test(self):
        testname = self.creator.testheader.text()

    def export_csv(self):
        options = qtw.QFileDialog.Options()
        filename, _ = qtw.QFileDialog.getSaveFileName(
            self,
            "Export as CSV",
            "",
            "Comma Separated Value Files (*.csv);;All Files (*)",
            options=options)
        if filename:
            self.backend.export_csv(self.testcode, filename,
                                    self.score_list.results)

    def show_test_scores(self, testcode):
        testname, results = self.backend.get_test_scores(testcode)
        self.testcode = testcode
        self.score_list = ScoreList(testname, results)
        for result in self.score_list.results:
            result.ui.viewDetails.clicked.connect(
                lambda annoyingbug, result=result:
                (self.view_test_results(
                    result.testcode, f"{result.score}/{result.total}", result.
                    studentcode), self.form.submit.clicked.disconnect(),
                 self.form.submit.clicked.connect(lambda: self.
                                                  show_test_scores(testcode))))

        self.score_list.back.clicked.connect(self.return_to_admin_dash)
        self.score_list.export.clicked.connect(self.export_csv)
        self.main_wid.addWidget(self.score_list)
        self.main_wid.setCurrentWidget(self.score_list)

    def generate_admin_tests(self):
        self.dash.newtest.clicked.connect(self.create_new_test)
        # just so lazy
        self.gen_dash_test_list()
        for test in self.tests:
            test.ui.attempted.setText('')
            scoresBtn = qtw.QPushButton()
            scoresBtn.setText("View Scores")
            scoresBtn.setSizePolicy(qtw.QSizePolicy.Expanding,
                                    qtw.QSizePolicy.Fixed)
            scoresBtn.clicked.connect(lambda annoyingbug, test=test: self.
                                      show_test_scores(test.testcode))
            test.ui.horizontalLayout.addWidget(scoresBtn)
            test.ui.attempt.setText('Edit')
            test.ui.attempt.disconnect()
            test.ui.line_3.setVisible(False)
            test.ui.attempt.clicked.connect(
                lambda annoyingbug, test=test: self.modify_test(test.testcode))

    def validate_password(self):
        if self.backend.validate_password(self.login.username.text(),
                                          self.login.password.text()):
            if self.login.username.text() != "admin":
                self.currentid = int(self.login.username.text())
                self.generate_dash()
                self.main_wid.setCurrentWidget(self.dashwid)
            else:
                self.currentid = None
                self.generate_admin_dash()
                self.main_wid.setCurrentWidget(self.dashwid)
        else:
            self.login.status.setText(
                "<font color=\"red\"><b>Invalid credentials</b></font>")

    def generate_test(self, testcode):
        testname, questiontuples = self.backend.get_test_details(testcode)
        self.questions = []
        self.testcode = testcode
        for question in questiontuples:
            self.questions.append(
                Question(
                    # q,a,b,c,d,qcode,correct
                    *[str(x) for x in question[1:6]],
                    question[0],
                    question[6]))
        self.form = Form(testname, self.questions)
        self.form.submit.clicked.connect(self.submit_test)
        self.main_wid.addWidget(self.form)

    def submit_test(self):
        testcode = self.testcode
        sid = self.currentid
        choices = []
        qcodes = []
        for question in self.form.questions:
            qui = question.ui
            if qui.a.isChecked(): choices.append(1)
            elif qui.b.isChecked(): choices.append(2)
            elif qui.c.isChecked(): choices.append(3)
            elif qui.d.isChecked(): choices.append(4)
            else: choices.append(None)

            qcodes.append(question.qcode)
        numcorrect = len([
            q for q, a in zip(self.form.questions, choices) if q.correct == a
        ])

        self.backend.submit_test(testcode, sid, qcodes, choices, numcorrect)
        self.generate_thanks()
        self.main_wid.setCurrentWidget(self.thankswid)

    def return_to_admin_dash(self):
        self.generate_admin_dash()
        self.main_wid.setCurrentWidget(self.dashwid)

    def return_to_dash(self):
        self.generate_dash()
        self.main_wid.setCurrentWidget(self.dashwid)

    def generate_thanks(self):
        self.thankswid = qtw.QWidget()
        self.dash = Ui_Thanks()
        self.dash.setupUi(self.thankswid)
        self.main_wid.addWidget(self.thankswid)
        self.dash.back.clicked.connect(self.return_to_dash)
Beispiel #23
0
 def __init__(self, parent=None):
     QtGui.QWidget.__init__(self, parent)
     self.ui = Ui_Login()
     self.ui.setupUi(self)
     QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.button_click)
Beispiel #24
0
class Login_Window(QtGui.QDialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        self.user_access_level = -1
        self.ui = Ui_Login()
        self.ui.setupUi(self)
        self.ui.pushButton_2.clicked.connect(self.handleLogin)
        self.ui.pushButton.clicked.connect(self.close)
        self.name = ''  #keep track of user name

    def handleLogin(self):
        # if cannot connect to database showing error window
        if not self.conn():
            QtGui.QMessageBox.warning(self, 'Error',
                                      'database contecting error')

        # create sql query to retrieve username, password, accesslevel
        query = QSqlQuery()
        query.exec_(
            "SELECT User_name, User_password, Access_level FROM Account")

        # get username and password from gui
        input_name = self.ui.lineEdit.text()
        input_pass = self.ui.lineEdit_2.text()

        #this flag for detect weather the username and password are valid
        self.flag = False

        while query.next():
            # get username, password and accesslevel from database
            user_name = str(query.value(0))
            user_password = str(query.value(1))
            user_access_level = int(query.value(2))

            # campare above information to the user inputted information
            if (user_name == input_name and user_password == input_pass):
                # if valid user found, set flag true
                self.flag = True

                self.name = user_name

                #check for default password
                if (user_password == "rcdancearts"):
                    self.default_msg = "Remember to change your password"
                    self.default_reply = QtGui.QMessageBox.information(
                        self, 'Change Password', self.default_msg,
                        QtGui.QMessageBox.Ok)

                # save personal information once the valid information found
                self.user_access_level = user_access_level
                #test.....
                self.close()

        # if user not found, show error message.
        if not self.flag:
            QtGui.QMessageBox.warning(self, 'Error',
                                      'Invalid user or password')
            self.ui.lineEdit_2.clear()

    # set up database connection
    def getAccessLevel(self):
        return self.user_access_level

    def getUsername(self):
        return self.name

    def conn(self):
        self.db = QSqlDatabase.addDatabase("QMYSQL")
        self.db.setHostName("services1.mcs.sdsmt.edu")
        self.db.setDatabaseName("db_dancesoft_f15")
        self.db.setUserName("dancesoft_f15")
        self.db.setPassword("DanceSoft")
        return self.db.open()
Beispiel #25
0
 def showAcceuil(self):
     self.showAcceuil = QtWidgets.QMainWindow()
     self.ui = Ui_Login()
     self.ui.setupUi(self.showAcceuil)
     # Login.hide()
     self.showAcceuil.show()
Beispiel #26
0
class MyLogin(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.p = parent
        self.ui = Ui_Login()
        self.ui.setupUi(self)
        self.connect_ctrls()
        if self.p.settings.is_configured() is True:
            self.ui.username.setText(self.p.domains.config['user']['username'])
            self.ui.password.setText(self.p.domains.config['user']['password'])

    def connect_ctrls(self):
        self.ui.Buttons.button(self.ui.Buttons.Save).clicked.connect(
            self.try_login)
        self.ui.Buttons.button(self.ui.Buttons.Cancel).clicked.connect(
            self.close)

    def set_status(self, text, color):
        self.ui.status.setText(str(text))
        self.ui.status.setStyleSheet("#status { color : %s; }" % str(color))

    def start_thread(self):
        self.ui.Buttons.button(self.ui.Buttons.Save).setEnabled(False)
        self.ui.Buttons.button(self.ui.Buttons.Cancel).setEnabled(False)
        self.loginT = authThread(self.usr, self.psw)
        self.set_status("Authenticatig...", "blue")
        self.loginT.begin()
        self.connect(self.loginT, QtCore.SIGNAL("loginEvent"), self.h_rsp)

    def try_login(self):
        self.usr = self.ui.username.text()
        self.psw = self.ui.password.text()

        if self.p.settings.is_configured() is True:
            old_u = self.p.domains.config['user']['username']
            old_p = self.p.domains.config['user']['password']
            if str(self.usr) != str(old_u) or str(self.psw) != str(old_p):
                self.start_thread()
            else:
                self.close()
        else:
            self.start_thread()

    def h_rsp(self, rsp):
        if rsp == True:
            data = {
                'user': {
                    'username': str(self.usr),
                    'password': str(self.psw)
                }
            }
            try:
                self.set_status("Success", "green")
                self.p.settings.save_cfg(data)
                self.p.domains = updater.Domains()
                self.set_status("Retrieving domain list, please wait...",
                                "green")
                self.p.dom_data = self.p.domains.get_domains()
                self.close()
            except:
                self.set_status("Failed to write config :(", "red")
        else:
            self.ui.Buttons.button(self.ui.Buttons.Save).setEnabled(True)
            self.ui.Buttons.button(self.ui.Buttons.Cancel).setEnabled(True)
            txt = self.p.get_code_text(rsp)
            self.set_status(str(txt), "red")
        self.emit(QtCore.SIGNAL("userChanged"))

    def keyPressEvent(self, e):
        if e.key() == QtCore.Qt.Key_Escape:
            if self.p.settings.is_configured() is False:
                sys.exit()
            else:
                self.close()

    def closeEvent(self, event):
        if self.p.settings.is_configured() is False:
            sys.exit()
        else:
            event.accept()
Beispiel #27
0
from login import Ui_Login
from PyQt5 import QtCore, QtGui, QtWidgets
import sys

app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QDialog()
ui = Ui_Login(Form)
sys.exit(app.exec_())
Beispiel #28
0
import sys

from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget

from login import Ui_Login

if __name__ == '__main__':

    app = QApplication(sys.argv)
    login = QWidget()
    login_ui = Ui_Login()
    login_ui.setupUi(login)
    login.show()
    sys.exit(app.exec_())