Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from PyQt4 import QtGui, uic
- import sqlite3 as lite
- import csv
- loginMenuUi = uic.loadUiType('Menu.ui')[0]
- makeacUi = uic.loadUiType('Make Account.ui')[0]
- loginUi = uic.loadUiType('Login.ui')[0]
- mainMenuUi = uic.loadUiType('MainMenu.ui')[0]
- homeworkUi = uic.loadUiType('Homework.ui')[0]
- prefUi = uic.loadUi('Preferences.ui')[0]
- class LoginMenu(QtGui.QMainWindow, loginMenuUi):
- def __init__(self, parent = None):
- QtGui.QMainWindow.__init__(self, parent)
- self.setupUi(self)
- self.btnLogin.clicked.connect(self.login)
- self.btnSignUp.clicked.connect(self.signUp)
- self.c = d.checkUsers(0)
- if self.c == 0:
- self.btnLogin.setHidden(True)
- self.btnSignUp.setGeometry(90, 100, 201, 71)
- else:
- self.btnLogin.setHidden(False)
- def login(self):
- loginMenu.close()
- self.login = Login(None)
- self.login.show()
- def signUp(self):
- loginMenu.hide()
- self.create = CreateAccount(None)
- self.create.show()
- class CreateAccount(QtGui.QMainWindow, makeacUi):
- def __init__(self, parent = None):
- QtGui.QMainWindow.__init__(self, parent)
- self.setupUi(self)
- self.btnCreateAccount.clicked.connect(self.createAccount)
- def createAccount(self):
- self.uValid = False
- self.mValid = False
- self.lValid = False
- self.usValid = False
- self.sValid = False
- if len(self.edtUsername.text()) < 4:
- QtGui.QMessageBox.warning(self, 'Incorrect Length', 'Please enter a username that is at least 4 characters', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
- self.clear()
- self.uValid = False
- else:
- self.uValid = True
- if ' ' in self.edtUsername.text():
- QtGui.QMessageBox.warning(self, 'Spaces not allowed', 'Spaces are not allowed in usernames', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
- self.clear()
- self.sValid = False
- else:
- self.sValid = True
- if self.edtPass1.text() != self.edtPass2.text():
- QtGui.QMessageBox.warning(self, 'Password Matches', 'Please ensure your confirmed password matches your entered password', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
- self.clear()
- self.mValid = False
- else:
- self.mValid = True
- if len(self.edtPass1.text()) < 6 or len(self.edtPass1.text()) > 16:
- QtGui.QMessageBox.warning(self, 'Password length', 'Please ensure your password is between 6 and 16 characters long', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
- self.clear()
- self.lValid = False
- else:
- self.lValid= True
- if len(d.res) > 0:
- for each in d.res:
- if self.edtUsername.text() in each:
- QtGui.QMessageBox.warning(self, 'Username taken', 'This username is already in use', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
- self.usValid = False
- self.clear()
- else:
- self.usValid = True
- else:
- self.usValid = True
- if self.mValid and self.uValid and self.lValid and self.usValid and self.sValid:
- self.addUser()
- self.prefs = d.checkPrefs(0)
- print(type(self.prefs))
- def clear(self):
- self.edtUsername.setText('')
- self.edtPass1.setText('')
- self.edtPass2.setText('')
- self.edtUsername.setFocus()
- def addUser(self):
- with open('Users.csv', 'a', newline = '') as fp:
- a = csv.writer(fp, delimiter = ',')
- data = [[self.edtUsername.text(), self.edtPass1.text()]]
- a.writerows(data)
- d.checkUsers(0)
- def keyPressEvent(self, QKeyEvent):
- if QKeyEvent.key() == 16777220:
- self.createAccount()
- class Login(QtGui.QMainWindow, loginUi):
- def __init__(self, parent = None):
- QtGui.QMainWindow.__init__(self, parent)
- self.setupUi(self)
- self.edtUsername.setFocus()
- self.btnLogin.clicked.connect(self.checkLogin)
- def checkLogin(self):
- self.users = d.checkUsers(1)
- self.userFound = False
- self.loginCorrect = False
- self.entered = False
- self.username = self.edtUsername.text()
- self.password = self.edtPassword.text()
- if self.username == '' or self.password == '':
- QtGui.QMessageBox.warning(self, 'Incomplete', 'Please complete all required fields', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
- self.entered = False
- else:
- self.entered = True
- if self.entered:
- for each in self.users:
- if each[0] == self.username:
- self.userFound = True
- if each[1] == self.password:
- self.loginCorrect = True
- else:
- self.loginCorrect = False
- else:
- self.userFound = False
- if not self.userFound:
- QtGui.QMessageBox.warning(self, 'User not found', 'This username was not found', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
- elif not self.loginCorrect:
- QtGui.QMessageBox.warning(self, 'Incorrect Password', 'The entered password does not match the one on file', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
- else:
- loginMenu.login.hide()
- self.mainMen = MainMenu(None)
- self.mainMen.show()
- class MainMenu(QtGui.QMainWindow, mainMenuUi):
- def __init__(self, parent = None):
- QtGui.QMainWindow.__init__(self, parent)
- self.setupUi(self)
- self.btnHomework.clicked.connect(self.homework)
- self.btnClasses.clicked.connect(self.classes)
- def homework(self):
- loginMenu.login.mainMen.hide()
- self.hw = Homework(None)
- self.hw.show()
- def classes(self):
- print('Classes')
- class Homework(QtGui.QMainWindow, homeworkUi):
- def __init__(self, parent = None):
- QtGui.QMainWindow.__init__(self, parent)
- self.setupUi(self)
- class Preferences(QtGui.QMainWindow, prefUi):
- def __init__(self, parent = None):
- QtGui.QMainWindow.__init__(self, parent)
- self.setupUi(self)
- class Database:
- def __init__(self):
- self.res = []
- self.userPrefs = []
- def checkUsers(self, type):
- db = 'Users.db'
- con = lite.connect(db)
- cur = con.cursor()
- cur.execute('DROP TABLE IF EXISTS Users')
- cur.execute('''CREATE TABLE 'Users' (
- 'UserID' INTEGER,
- 'Username' TEXT NOT NULL,
- 'Password' TEXT NOT NULL,
- PRIMARY KEY('UserID')
- );''')
- # cur.execute('DROP TABLE IF EXISTS Homework')
- # cur.execute('''CREATE TABLE 'Homework' (
- # 'HomeworkID' INTEGER,
- # 'Task' TEXT NOT NULL,
- # 'Teacher' TEXT NOT NULL,
- # 'Date Due' TEXT NOT NULL,
- # 'Subject' TEXT NOT NULL,
- # PRIMARY KEY('HomeworkID')
- # );''')
- # con.commit()
- filename = 'Users.csv'
- f = open(filename, 'rt')
- contents = f.read()
- rows = contents.split('\n')
- count = 0
- for each in rows:
- if len(each) > 0:
- columns = each.split(',')
- columns.insert(0, count)
- with con:
- cur.execute('INSERT INTO Users VALUES(?, ?, ?)', columns)
- count += 1
- s = 'SELECT * FROM Users'
- cur.execute(s)
- results = cur.fetchall()
- for each in results:
- self.res.append(each)
- if type == 0:
- if len(self.res) == 0:
- return 0
- else:
- return -1
- elif type == 1:
- return self.res
- def checkPrefs(self, user):
- db = 'Users.db'
- con = lite.connect(db)
- cur = con.cursor()
- cur.execute('DROP TABLE IF EXISTS UserPrefs')
- cur.execute('''CREATE TABLE 'UserPrefs' (
- 'Class' TEXT NOT NULL,
- 'Teacher' TEXT NOT NULL,
- 'Day Taught' TEXT NOT NULL,
- 'Period Taught' INTEGER NOT NULL,
- 'UserID' INTEGER
- );''')
- filename = 'UserPrefs.csv'
- f = open(filename, 'rt')
- contents = f.read()
- rows = contents.split('\n')
- count = 0
- for each in rows:
- if len(each) > 0:
- columns = each.split(',')
- with con:
- cur.execute('INSERT INTO UserPrefs VALUES(?, ?, ?, ?, ?)', columns)
- count += 1
- s = 'SELECT * FROM UserPrefs'
- cur.execute(s)
- results = cur.fetchall()
- for each in results:
- self.userPrefs.append(each)
- count = 0
- self.found = False
- for prefs in self.userPrefs:
- if prefs[4] == user:
- self.found = True
- return self.userPrefs[count]
- else:
- count += 1
- if not self.found:
- return 0
- app = QtGui.QApplication(sys.argv)
- d = Database()
- loginMenu = LoginMenu(None)
- loginMenu.show()
- app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement