Advertisement
Guest User

Code

a guest
Mar 28th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.33 KB | None | 0 0
  1. import sys
  2. from PyQt4 import QtGui, uic
  3. import sqlite3 as lite
  4. import csv
  5.  
  6. loginMenuUi = uic.loadUiType('Menu.ui')[0]
  7. makeacUi = uic.loadUiType('Make Account.ui')[0]
  8. loginUi = uic.loadUiType('Login.ui')[0]
  9. mainMenuUi = uic.loadUiType('MainMenu.ui')[0]
  10. homeworkUi = uic.loadUiType('Homework.ui')[0]
  11. prefUi = uic.loadUi('Preferences.ui')[0]
  12.  
  13. class LoginMenu(QtGui.QMainWindow, loginMenuUi):
  14.     def __init__(self, parent = None):
  15.         QtGui.QMainWindow.__init__(self, parent)
  16.         self.setupUi(self)
  17.         self.btnLogin.clicked.connect(self.login)
  18.         self.btnSignUp.clicked.connect(self.signUp)
  19.  
  20.         self.c = d.checkUsers(0)
  21.         if self.c == 0:
  22.             self.btnLogin.setHidden(True)
  23.             self.btnSignUp.setGeometry(90, 100, 201, 71)
  24.         else:
  25.             self.btnLogin.setHidden(False)
  26.  
  27.     def login(self):
  28.         loginMenu.close()
  29.         self.login = Login(None)
  30.         self.login.show()
  31.  
  32.     def signUp(self):
  33.         loginMenu.hide()
  34.         self.create = CreateAccount(None)
  35.         self.create.show()
  36.  
  37.  
  38. class CreateAccount(QtGui.QMainWindow, makeacUi):
  39.     def __init__(self, parent = None):
  40.         QtGui.QMainWindow.__init__(self, parent)
  41.         self.setupUi(self)
  42.         self.btnCreateAccount.clicked.connect(self.createAccount)
  43.  
  44.     def createAccount(self):
  45.         self.uValid = False
  46.         self.mValid = False
  47.         self.lValid = False
  48.         self.usValid = False
  49.         self.sValid = False
  50.  
  51.         if len(self.edtUsername.text()) < 4:
  52.             QtGui.QMessageBox.warning(self, 'Incorrect Length', 'Please enter a username that is at least 4 characters', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
  53.             self.clear()
  54.             self.uValid = False
  55.         else:
  56.             self.uValid = True
  57.  
  58.         if ' ' in self.edtUsername.text():
  59.             QtGui.QMessageBox.warning(self, 'Spaces not allowed', 'Spaces are not allowed in usernames', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
  60.             self.clear()
  61.             self.sValid = False
  62.         else:
  63.             self.sValid = True
  64.  
  65.         if self.edtPass1.text() != self.edtPass2.text():
  66.             QtGui.QMessageBox.warning(self, 'Password Matches', 'Please ensure your confirmed password matches your entered password', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
  67.             self.clear()
  68.             self.mValid = False
  69.         else:
  70.             self.mValid = True
  71.  
  72.         if len(self.edtPass1.text()) < 6 or len(self.edtPass1.text()) > 16:
  73.             QtGui.QMessageBox.warning(self, 'Password length', 'Please ensure your password is between 6 and 16 characters long', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
  74.             self.clear()
  75.             self.lValid = False
  76.         else:
  77.             self.lValid= True
  78.  
  79.         if len(d.res) > 0:
  80.             for each in d.res:
  81.                 if self.edtUsername.text() in each:
  82.                     QtGui.QMessageBox.warning(self, 'Username taken', 'This username is already in use', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
  83.                     self.usValid = False
  84.                     self.clear()
  85.                 else:
  86.                     self.usValid = True
  87.         else:
  88.             self.usValid = True
  89.  
  90.         if self.mValid and self.uValid and self.lValid and self.usValid and self.sValid:
  91.             self.addUser()
  92.             self.prefs = d.checkPrefs(0)
  93.             print(type(self.prefs))
  94.  
  95.  
  96.     def clear(self):
  97.         self.edtUsername.setText('')
  98.         self.edtPass1.setText('')
  99.         self.edtPass2.setText('')
  100.         self.edtUsername.setFocus()
  101.  
  102.     def addUser(self):
  103.         with open('Users.csv', 'a', newline = '') as fp:
  104.             a = csv.writer(fp, delimiter = ',')
  105.             data = [[self.edtUsername.text(), self.edtPass1.text()]]
  106.             a.writerows(data)
  107.         d.checkUsers(0)
  108.  
  109.     def keyPressEvent(self, QKeyEvent):
  110.         if QKeyEvent.key() == 16777220:
  111.             self.createAccount()
  112.  
  113.  
  114. class Login(QtGui.QMainWindow, loginUi):
  115.     def __init__(self, parent = None):
  116.         QtGui.QMainWindow.__init__(self, parent)
  117.         self.setupUi(self)
  118.         self.edtUsername.setFocus()
  119.         self.btnLogin.clicked.connect(self.checkLogin)
  120.  
  121.     def checkLogin(self):
  122.         self.users = d.checkUsers(1)
  123.         self.userFound = False
  124.         self.loginCorrect = False
  125.         self.entered = False
  126.         self.username = self.edtUsername.text()
  127.         self.password = self.edtPassword.text()
  128.  
  129.         if self.username == '' or self.password == '':
  130.             QtGui.QMessageBox.warning(self, 'Incomplete', 'Please complete all required fields', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
  131.             self.entered = False
  132.         else:
  133.             self.entered = True
  134.  
  135.         if self.entered:
  136.             for each in self.users:
  137.                 if each[0] == self.username:
  138.                     self.userFound = True
  139.                     if each[1] == self.password:
  140.                         self.loginCorrect = True
  141.                     else:
  142.                         self.loginCorrect = False
  143.                 else:
  144.                     self.userFound = False
  145.  
  146.             if not self.userFound:
  147.                 QtGui.QMessageBox.warning(self, 'User not found', 'This username was not found', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
  148.             elif not self.loginCorrect:
  149.                 QtGui.QMessageBox.warning(self, 'Incorrect Password', 'The entered password does not match the one on file', QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
  150.  
  151.             else:
  152.                 loginMenu.login.hide()
  153.                 self.mainMen = MainMenu(None)
  154.                 self.mainMen.show()
  155.  
  156.  
  157. class MainMenu(QtGui.QMainWindow, mainMenuUi):
  158.     def __init__(self, parent = None):
  159.         QtGui.QMainWindow.__init__(self, parent)
  160.         self.setupUi(self)
  161.         self.btnHomework.clicked.connect(self.homework)
  162.         self.btnClasses.clicked.connect(self.classes)
  163.  
  164.     def homework(self):
  165.         loginMenu.login.mainMen.hide()
  166.         self.hw = Homework(None)
  167.         self.hw.show()
  168.  
  169.     def classes(self):
  170.         print('Classes')
  171.  
  172.  
  173. class Homework(QtGui.QMainWindow, homeworkUi):
  174.     def __init__(self, parent = None):
  175.         QtGui.QMainWindow.__init__(self, parent)
  176.         self.setupUi(self)
  177.  
  178.  
  179. class Preferences(QtGui.QMainWindow, prefUi):
  180.     def __init__(self, parent = None):
  181.         QtGui.QMainWindow.__init__(self, parent)
  182.         self.setupUi(self)
  183.  
  184.  
  185. class Database:
  186.     def __init__(self):
  187.         self.res = []
  188.         self.userPrefs = []
  189.        
  190.     def checkUsers(self, type):
  191.         db = 'Users.db'
  192.         con = lite.connect(db)
  193.         cur = con.cursor()
  194.         cur.execute('DROP TABLE IF EXISTS Users')
  195.         cur.execute('''CREATE TABLE 'Users' (
  196.        'UserID' INTEGER,
  197.        'Username' TEXT NOT NULL,
  198.        'Password' TEXT NOT NULL,
  199.        PRIMARY KEY('UserID')
  200.        );''')
  201.  
  202.         # cur.execute('DROP TABLE IF EXISTS Homework')
  203.         # cur.execute('''CREATE TABLE 'Homework' (
  204.         # 'HomeworkID' INTEGER,
  205.         # 'Task' TEXT NOT NULL,
  206.         # 'Teacher' TEXT NOT NULL,
  207.         # 'Date Due' TEXT NOT NULL,
  208.         # 'Subject' TEXT NOT NULL,
  209.         # PRIMARY KEY('HomeworkID')
  210.         # );''')
  211.         # con.commit()
  212.  
  213.         filename = 'Users.csv'
  214.         f = open(filename, 'rt')
  215.         contents = f.read()
  216.         rows = contents.split('\n')
  217.         count = 0
  218.         for each in rows:
  219.             if len(each) > 0:
  220.                 columns = each.split(',')
  221.                 columns.insert(0, count)
  222.                 with con:
  223.                     cur.execute('INSERT INTO Users VALUES(?, ?, ?)', columns)
  224.             count += 1
  225.  
  226.         s = 'SELECT * FROM Users'
  227.         cur.execute(s)
  228.         results = cur.fetchall()
  229.         for each in results:
  230.             self.res.append(each)
  231.         if type == 0:
  232.             if len(self.res) == 0:
  233.                 return 0
  234.             else:
  235.                 return -1
  236.         elif type == 1:
  237.             return self.res
  238.  
  239.     def checkPrefs(self, user):
  240.         db = 'Users.db'
  241.         con = lite.connect(db)
  242.         cur = con.cursor()
  243.         cur.execute('DROP TABLE IF EXISTS UserPrefs')
  244.         cur.execute('''CREATE TABLE 'UserPrefs' (
  245.       'Class' TEXT NOT NULL,
  246.       'Teacher' TEXT NOT NULL,
  247.       'Day Taught' TEXT NOT NULL,
  248.       'Period Taught' INTEGER NOT NULL,
  249.       'UserID' INTEGER
  250.       );''')
  251.  
  252.         filename = 'UserPrefs.csv'
  253.         f = open(filename, 'rt')
  254.         contents = f.read()
  255.         rows = contents.split('\n')
  256.         count = 0
  257.         for each in rows:
  258.             if len(each) > 0:
  259.                 columns = each.split(',')
  260.                 with con:
  261.                     cur.execute('INSERT INTO UserPrefs VALUES(?, ?, ?, ?, ?)', columns)
  262.             count += 1
  263.  
  264.         s = 'SELECT * FROM UserPrefs'
  265.         cur.execute(s)
  266.         results = cur.fetchall()
  267.         for each in results:
  268.             self.userPrefs.append(each)
  269.  
  270.         count = 0
  271.         self.found = False
  272.         for prefs in self.userPrefs:
  273.             if prefs[4] == user:
  274.                 self.found = True
  275.                 return self.userPrefs[count]
  276.             else:
  277.                 count += 1
  278.  
  279.         if not self.found:
  280.             return 0
  281.  
  282.  
  283. app = QtGui.QApplication(sys.argv)
  284. d = Database()
  285. loginMenu = LoginMenu(None)
  286. loginMenu.show()
  287. app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement