Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- Created on Jun 9, 2015
- @author: n0268773
- '''
- import hashlib
- import random
- import smtplib
- import sys
- from PyQt4 import QtCore, QtGui
- from PyQt4.Qt import QAbstractItemView, QHeaderView, QTableWidgetItem, \
- QApplication
- from PyQt4.QtGui import QMainWindow
- from PyQt4.QtSql import QSqlDatabase, QSqlQuery
- from checkin import CheckinWindow
- from checkout import CheckoutWindow
- from mainWindow import Ui_MainWindow
- '''
- CheckinWindow and CheckoutWindow need this at top
- try:
- from PyQt4.QtCore import QString
- except ImportError:
- # we are using Python3 so QString is not defined
- QString = str
- def _fromUtf8(s):
- return s
- '''
- class Main(QMainWindow):
- def __init__(self):
- super(Main, self).__init__()
- # build ui
- self.ui = Ui_MainWindow()
- self.ui.setupUi(self)
- global borrowedList
- global availableList
- availableList = {}
- borrowedList = {}
- self.updateAvailableTable()
- self.updateBorrowedTable()
- self.ui.availableTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
- self.ui.borrowedTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
- # Connect signals with responses
- self.ui.checkoutButton.clicked.connect(self.handleCheckout)
- self.ui.checkinButton.clicked.connect(self.handleCheckin)
- self.ui.pingButton.clicked.connect(self.handlePingButton)
- self.ui.borrowedTable.clicked.connect(self.handleBorrowedListChange)
- def handlePingButton(self):
- nNumber = self.ui.pingButton.text().split(" ")
- #send_email()
- print("pinging", nNumber[1])
- def handleBorrowedListChange(self):
- # Change the text borrowed phone text block
- rowNum = self.ui.borrowedTable.currentRow()
- nNumber = self.ui.borrowedTable.item(rowNum, self.ui.borrowedTable.columnCount()-1).text()
- text = self.ui.borrowedTable.item(rowNum,1).text()
- # change ping button information
- self.ui.borrowedDeviceOwnerLabel.setText("Click the button below to request n%s to return the %s" % (nNumber, text))
- self.ui.pingButton.setText("Ping n%s" % nNumber)
- self.ui.pingButton.setEnabled(True)
- def handleCheckin(self):
- global checkinWindow
- checkinWindow = Checkin()
- checkinWindow.show()
- def handleCheckout(self):
- global checkoutWidget
- checkoutWidget = Checkout()
- checkoutWidget.show()
- def updateBorrowedTable(self):
- global borrowedList
- borrowedList = {}
- borrowedTable = self.ui.borrowedTable
- query = QSqlQuery(db)
- query.exec_("SELECT * from test_phone_table;")
- row = 0
- borrowedTable.setColumnCount(6)
- borrowedTable.setColumnWidth(0,50)
- borrowedTable.setRowCount(0)
- borrowedTable.verticalHeader().setVisible(False)
- for i in range (0, borrowedTable.columnCount()):
- borrowedTable.horizontalHeader().setResizeMode(i, QHeaderView.Stretch)
- borrowedTable.setSelectionBehavior(QAbstractItemView.SelectRows)
- borrowedTable.setSelectionMode(QAbstractItemView.SingleSelection)
- while query.next():
- record = query.record()
- if record.value(record.count()-1) == 'true':
- borrowedList[record.value(0)] = record.value(1)
- borrowedTable.setRowCount(row+1)
- for col in range(0, record.count()):
- if isinstance(record.value(col), int):
- item = QTableWidgetItem()
- item.setData(QtCore.Qt.EditRole, record.value(col))
- borrowedTable.setItem(row, col, item)
- else:
- item = QTableWidgetItem(record.value(col))
- borrowedTable.setItem(row, col, item)
- row = row+1
- borrowedTable.show()
- def updateAvailableTable(self):
- availableTable = self.ui.availableTable
- availableTable.setFocusPolicy(QtCore.Qt.NoFocus)
- query = QSqlQuery(db)
- query.exec_("SELECT * from test_phone_table;")
- availableTable.setColumnCount(5)
- availableTable.setColumnWidth(0,50)
- availableTable.setRowCount(0)
- availableTable.verticalHeader().setVisible(False)
- for i in range (0, availableTable.columnCount()):
- availableTable.horizontalHeader().setResizeMode(i, QHeaderView.Stretch)
- availableTable.setSelectionMode(QAbstractItemView.NoSelection)
- global availableList
- availableList = {}
- row = 0
- while query.next():
- record = query.record()
- if record.value(record.count()-1) == 'false':
- availableList[record.value(0)] = record.value(1)
- availableTable.setRowCount(row+1)
- for col in range(0, record.count()):
- if isinstance(record.value(col), int):
- item = QTableWidgetItem()
- item.setData(QtCore.Qt.EditRole, record.value(col))
- availableTable.setItem(row, col, item)
- else:
- item = QTableWidgetItem(record.value(col))
- availableTable.setItem(row, col, item)
- row = row+1
- else:
- self.ui.borrowedDeviceOwnerLabel.setText("Select a borrowed device to ping borrower")
- availableTable.show()
- class Checkin(QMainWindow):
- def __init__(self):
- super(Checkin, self).__init__()
- # build ui
- self.checkinUI = CheckinWindow()
- self.checkinUI.setupUi(self)
- self.checkinUI.doneButton.clicked.connect(self.handleDone)
- self.checkinUI.removeDeviceButton.clicked.connect(self.removeDevice)
- self.checkinUI.deviceButton.clicked.connect(self.addDevice)
- returningDeviceTable = self.checkinUI.returningDeviceTable
- returningDeviceTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
- returningDeviceTable.setRowCount(0)
- returningDeviceTable.setColumnCount(2)
- returningDeviceTable.setColumnWidth(0, 50)
- returningDeviceTable.verticalHeader().setVisible(False)
- for i in range (0, returningDeviceTable.columnCount()):
- returningDeviceTable.horizontalHeader().setResizeMode(i, QHeaderView.Stretch)
- returningDeviceTable.setSelectionBehavior(QAbstractItemView.SelectRows)
- returningDeviceTable.setSelectionMode(QAbstractItemView.SingleSelection)
- def addDevice(self):
- if borrowedList:
- randPhone = random.choice(list(borrowedList.keys()))
- row = self.checkinUI.returningDeviceTable.rowCount()
- self.checkinUI.returningDeviceTable.setRowCount((row + 1))
- item = QTableWidgetItem()
- item.setData(QtCore.Qt.EditRole,randPhone)
- self.checkinUI.returningDeviceTable.setItem(row, 0, item)
- self.checkinUI.returningDeviceTable.setItem(row, 1, QTableWidgetItem(borrowedList[randPhone]))
- self.checkinUI.returningDeviceTable.show()
- def handleDone(self):
- returningDeviceTable = self.checkinUI.returningDeviceTable
- for row in range (0, returningDeviceTable.rowCount()):
- ID = int(returningDeviceTable.item(row, 0).text())
- query = QSqlQuery(db)
- query.prepare('update test_phone_table set borrower_n_number = ?, borrowed = ? where ID = ?')
- query.addBindValue("")
- query.addBindValue('false')
- query.addBindValue(ID)
- query.exec_()
- mainClass.updateAvailableTable()
- mainClass.updateBorrowedTable()
- self.close()
- def removeDevice(self):
- returningDeviceTable = self.checkinUI.returningDeviceTable
- returningDeviceTable.removeRow(returningDeviceTable.currentRow())
- returningDeviceTable.setAlternatingRowColors(False)
- returningDeviceTable.setAlternatingRowColors(True)
- class Checkout(QMainWindow):
- def __init__(self):
- super(Checkout, self).__init__()
- # build ui
- self.checkoutUI = CheckoutWindow()
- self.checkoutUI.setupUi(self)
- requestedDeviceTable = self.checkoutUI.requestedDeviceTable
- requestedDeviceTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
- self.checkoutUI.removeDeviceButton.clicked.connect(self.removeDevice)
- self.checkoutUI.doneButton.clicked.connect(self.handleDone)
- self.checkoutUI.cancelButton.clicked.connect(self.handleCancel)
- self.checkoutUI.idButton.clicked.connect(self.handleID)
- global idAdded
- idAdded = False
- self.checkoutUI.doneButton.setDisabled(True)
- requestedDeviceTable.setRowCount(0)
- requestedDeviceTable.setColumnCount(2)
- requestedDeviceTable.setColumnWidth(0, 50)
- requestedDeviceTable.verticalHeader().setVisible(False)
- for i in range (0, requestedDeviceTable.columnCount()):
- requestedDeviceTable.horizontalHeader().setResizeMode(i, QHeaderView.Stretch)
- requestedDeviceTable.setSelectionBehavior(QAbstractItemView.SelectRows)
- requestedDeviceTable.setSelectionMode(QAbstractItemView.SingleSelection)
- #setup validation for text fields
- nRegex = QtCore.QRegExp('^(n|N)*\d{7}$')
- emaillRegex = QtCore.QRegExp('^[^@]+@[^@]+\.[^@]+$')
- nValidator = QtGui.QRegExpValidator(nRegex)
- emailValidator = QtGui.QRegExpValidator(emaillRegex)
- nNumberLine = self.checkoutUI.nNumberLine;
- nNumberLine.setValidator(nValidator)
- emailLine = self.checkoutUI.emailLine
- emailLine.setValidator(emailValidator)
- self.checkoutUI.hashLine.setDisabled(True)
- #connect validator to change in text
- global nNumberCheck
- global emailCheck
- nNumberCheck = False
- emailCheck = False
- nNumberLine.textChanged.connect(self.checkNLine)
- nNumberLine.textChanged.emit(nNumberLine.text())
- emailLine.textChanged.connect(self.checkEmailLine)
- emailLine.textChanged.emit(emailLine.text())
- nNumberLine.textChanged.connect(self.buttonEnabler)
- emailLine.textChanged.connect(self.buttonEnabler)
- def buttonEnabler (self):
- global nNumberCheck, emailCheck
- if nNumberCheck and emailCheck:
- self.checkoutUI.doneButton.setDisabled(False)
- self.checkoutUI.requiredFieldsLabel.hide()
- else:
- self.checkoutUI.doneButton.setDisabled(True)
- self.checkoutUI.requiredFieldsLabel.show()
- def checkNLine(self, *args, **kwargs):
- sender = self.sender()
- validator = sender.validator()
- state = validator.validate(sender.text(), 0)[0]
- global nNumberCheck
- if state == QtGui.QValidator.Acceptable:
- nNumberCheck = True
- color = '#c4df9b' # green
- elif state == QtGui.QValidator.Intermediate:
- nNumberCheck = False
- color = '#fff79a' # yellow
- else:
- nNumberCheck = False
- color = '#f6989d' # red
- sender.setStyleSheet('QLineEdit { background-color: %s }' % color)
- def checkEmailLine(self, *args, **kwargs):
- global emailCheck
- sender = self.sender()
- validator = sender.validator()
- state = validator.validate(sender.text(), 0)[0]
- if state == QtGui.QValidator.Acceptable:
- emailCheck = True
- color = '#c4df9b' # green
- elif state == QtGui.QValidator.Intermediate:
- emailCheck = False
- color = '#fff79a' # yellow
- else:
- emailCheck = False
- color = '#f6989d' # red
- sender.setStyleSheet('QLineEdit { background-color: %s }' % color)
- def handleID(self):
- self.addDevice()
- global idAdded
- nNumber = ""
- hashText = ''
- if not idAdded:
- nNumber = "%s" % ("%d" % random.randint(0, 9999999)).zfill(7)
- self.checkoutUI.nNumberLine.setText("%s" % nNumber)
- hashText = hashlib.md5(nNumber.encode('utf_8')).hexdigest( print ("HASHTEXT", hashText)
- )
- self.checkoutUI.hashLine.setText(hashText)
- idAdded = True
- #TODO: Change query to reflect RFID information rather than N#
- query = QSqlQuery(db)
- query.prepare('SELECT n_number, email from users where rfid_md5 = ?;')
- query.addBindValue(hashText)
- query.exec_()
- while q'''
- Created on Jun 9, 2015
- @author: n0268773
- '''
- import hashlib
- import random
- import smtplib
- import sys
- from PyQt4 import QtCore, QtGui
- from PyQt4.Qt import QAbstractItemView, QHeaderView, QTableWidgetItem, \
- QApplication
- from PyQt4.QtGui import QMainWindow
- from PyQt4.QtSql import QSqlDatabase, QSqlQuery
- from checkin import CheckinWindow
- from checkout import CheckoutWindow
- from mainWindow import Ui_MainWindow
- '''
- CheckinWindow and CheckoutWindow need this at top
- try:
- from PyQt4.QtCore import QString
- except ImportError:
- # we are using Python3 so QString is not defined
- QString = str
- def _fromUtf8(s):
- return s
- '''
- class Main(QMainWindow):
- def __init__(self):
- super(Main, self).__init__()
- # build ui
- self.ui = Ui_MainWindow()
- self.ui.setupUi(self)
- global borrowedList
- global availableList
- availableList = {}
- borrowedList = {}
- self.updateAvailableTable()
- self.updateBorrowedTable()
- self.ui.availableTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
- self.ui.borrowedTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
- # Connect signals with responses
- self.ui.checkoutButton.clicked.connect(self.handleCheckout)
- self.ui.checkinButton.clicked.connect(self.handleCheckin)
- self.ui.pingButton.clicked.connect(self.handlePingButton)
- self.ui.borrowedTable.clicked.connect(self.handleBorrowedListChange)
- def handlePingButton(self):
- nNumber = self.ui.pingButton.text().split(" ")
- #send_email()
- print("pinging", nNumber[1])
- def handleBorrowedListChange(self):
- # Change the text borrowed phone text block
- rowNum = self.ui.borrowedTable.currentRow()
- nNumber = self.ui.borrowedTable.item(rowNum, self.ui.borrowedTable.columnCount()-1).text()
- text = self.ui.borrowedTable.item(rowNum,1).text()
- # change ping button information
- self.ui.borrowedDeviceOwnerLabel.setText("Click the button below to request n%s to return the %s" % (nNumber, text))
- self.ui.pingButton.setText("Ping n%s" % nNumber)
- self.ui.pingButton.setEnabled(True)
- def handleCheckin(self):
- global checkinWindow
- checkinWindow = Checkin()
- checkinWindow.show()
- def handleCheckout(self):
- global checkoutWidget
- checkoutWidget = Checkout()
- checkoutWidget.show()
- def updateBorrowedTable(self):
- global borrowedList
- borrowedList = {}
- borrowedTable = self.ui.borrowedTable
- query = QSqlQuery(db)
- query.exec_("SELECT * from test_phone_table;")
- row = 0
- borrowedTable.setColumnCount(6)
- borrowedTable.setColumnWidth(0,50)
- borrowedTable.setRowCount(0)
- borrowedTable.verticalHeader().setVisible(False)
- for i in range (0, borrowedTable.columnCount()):
- borrowedTable.horizontalHeader().setResizeMode(i, QHeaderView.Stretch)
- borrowedTable.setSelectionBehavior(QAbstractItemView.SelectRows)
- borrowedTable.setSelectionMode(QAbstractItemView.SingleSelection)
- while query.next():
- record = query.record()
- if record.value(record.count()-1) == 'true':
- borrowedList[record.value(0)] = record.value(1)
- borrowedTable.setRowCount(row+1)
- for col in range(0, record.count()):
- if isinstance(record.value(col), int):
- item = QTableWidgetItem()
- item.setData(QtCore.Qt.EditRole, record.value(col))
- borrowedTable.setItem(row, col, item)
- else:
- item = QTableWidgetItem(record.value(col))
- borrowedTable.setItem(row, col, item)
- row = row+1
- borrowedTable.show()
- def updateAvailableTable(self):
- availableTable = self.ui.availableTable
- availableTable.setFocusPolicy(QtCore.Qt.NoFocus)
- query = QSqlQuery(db)
- query.exec_("SELECT * from test_phone_table;")
- availableTable.setColumnCount(5)
- availableTable.setColumnWidth(0,50)
- availableTable.setRowCount(0)
- availableTable.verticalHeader().setVisible(False)
- for i in range (0, availableTable.columnCount()):
- availableTable.horizontalHeader().setResizeMode(i, QHeaderView.Stretch)
- availableTable.setSelectionMode(QAbstractItemView.NoSelection)
- global availableList
- availableList = {}
- row = 0
- while query.next():
- record = query.record()
- if record.value(record.count()-1) == 'false':
- availableList[record.value(0)] = record.value(1)
- availableTable.setRowCount(row+1)
- for col in range(0, record.count()):
- if isinstance(record.value(col), int):
- item = QTableWidgetItem()
- item.setData(QtCore.Qt.EditRole, record.value(col))
- availableTable.setItem(row, col, item)
- else:
- item = QTableWidgetItem(record.value(col))
- availableTable.setItem(row, col, item)
- row = row+1
- else:
- self.ui.borrowedDeviceOwnerLabel.setText("Select a borrowed device to ping borrower")
- availableTable.show()
- class Checkin(QMainWindow):
- def __init__(self):
- super(Checkin, self).__init__()
- # build ui
- self.checkinUI = CheckinWindow()
- self.checkinUI.setupUi(self)
- self.checkinUI.doneButton.clicked.connect(self.handleDone)
- self.checkinUI.removeDeviceButton.clicked.connect(self.removeDevice)
- self.checkinUI.deviceButton.clicked.connect(self.addDevice)
- returningDeviceTable = self.checkinUI.returningDeviceTable
- returningDeviceTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
- returningDeviceTable.setRowCount(0)
- returningDeviceTable.setColumnCount(2)
- returningDeviceTable.setColumnWidth(0, 50)
- returningDeviceTable.verticalHeader().setVisible(False)
- for i in range (0, returningDeviceTable.columnCount()):
- returningDeviceTable.horizontalHeader().setResizeMode(i, QHeaderView.Stretch)
- returningDeviceTable.setSelectionBehavior(QAbstractItemView.SelectRows)
- returningDeviceTable.setSelectionMode(QAbstractItemView.SingleSelection)
- def addDevice(self):
- if borrowedList:
- randPhone = random.choice(list(borrowedList.keys()))
- row = self.checkinUI.returningDeviceTable.rowCount()
- self.checkinUI.returningDeviceTable.setRowCount((row + 1))
- item = QTableWidgetItem()
- item.setData(QtCore.Qt.EditRole,randPhone)
- self.checkinUI.returningDeviceTable.setItem(row, 0, item)
- self.checkinUI.returningDeviceTable.setItem(row, 1, QTableWidgetItem(borrowedList[randPhone]))
- self.checkinUI.returningDeviceTable.show()
- def handleDone(self):
- returningDeviceTable = self.checkinUI.returningDeviceTable
- for row in range (0, returningDeviceTable.rowCount()):
- ID = int(returningDeviceTable.item(row, 0).text())
- query = QSqlQuery(db)
- query.prepare('update test_phone_table set borrower_n_number = ?, borrowed = ? where ID = ?')
- query.addBindValue("")
- query.addBindValue('false')
- query.addBindValue(ID)
- query.exec_()
- mainClass.updateAvailableTable()
- mainClass.updateBorrowedTable()
- self.close()
- def removeDevice(self):
- returningDeviceTable = self.checkinUI.returningDeviceTable
- returningDeviceTable.removeRow(returningDeviceTable.currentRow())
- returningDeviceTable.setAlternatingRowColors(False)
- returningDeviceTable.setAlternatingRowColors(True)
- class Checkout(QMainWindow):
- def __init__(self):
- super(Checkout, self).__init__()
- # build ui
- self.checkoutUI = CheckoutWindow()
- self.checkoutUI.setupUi(self)
- requestedDeviceTable = self.checkoutUI.requestedDeviceTable
- requestedDeviceTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
- self.checkoutUI.removeDeviceButton.clicked.connect(self.removeDevice)
- self.checkoutUI.doneButton.clicked.connect(self.handleDone)
- self.checkoutUI.cancelButton.clicked.connect(self.handleCancel)
- self.checkoutUI.idButton.clicked.connect(self.handleID)
- global idAdded
- idAdded = False
- self.checkoutUI.doneButton.setDisabled(True)
- requestedDeviceTable.setRowCount(0)
- requestedDeviceTable.setColumnCount(2)
- requestedDeviceTable.setColumnWidth(0, 50)
- requestedDeviceTable.verticalHeader().setVisible(False)
- for i in range (0, requestedDeviceTable.columnCount()):
- requestedDeviceTable.horizontalHeader().setResizeMode(i, QHeaderView.Stretch)
- requestedDeviceTable.setSelectionBehavior(QAbstractItemView.SelectRows)
- requestedDeviceTable.setSelectionMode(QAbstractItemView.SingleSelection)
- #setup validation for text fields
- nRegex = QtCore.QRegExp('^(n|N)*\d{7}$')
- emaillRegex = QtCore.QRegExp('^[^@]+@[^@]+\.[^@]+$')
- nValidator = QtGui.QRegExpValidator(nRegex)
- emailValidator = QtGui.QRegExpValidator(emaillRegex)
- nNumberLine = self.checkoutUI.nNumberLine;
- nNumberLine.setValidator(nValidator)
- emailLine = self.checkoutUI.emailLine
- emailLine.setValidator(emailValidator)
- self.checkoutUI.hashLine.setDisabled(True)
- #connect validator to change in text
- global nNumberCheck
- global emailCheck
- nNumberCheck = False
- emailCheck = False
- nNumberLine.textChanged.connect(self.checkNLine)
- nNumberLine.textChanged.emit(nNumberLine.text())
- emailLine.textChanged.connect(self.checkEmailLine)
- emailLine.textChanged.emit(emailLine.text())
- nNumberLine.textChanged.connect(self.buttonEnabler)
- emailLine.textChanged.connect(self.buttonEnabler)
- def buttonEnabler (self):
- global nNumberCheck, emailCheck
- if nNumberCheck and emailCheck:
- self.checkoutUI.doneButton.setDisabled(False)
- self.checkoutUI.requiredFieldsLabel.hide()
- else:
- self.checkoutUI.doneButton.setDisabled(True)
- self.checkoutUI.requiredFieldsLabel.show()
- def checkNLine(self, *args, **kwargs):
- sender = self.sender()
- validator = sender.validator()
- state = validator.validate(sender.text(), 0)[0]
- global nNumberCheck
- if state == QtGui.QValidator.Acceptable:
- nNumberCheck = True
- color = '#c4df9b' # green
- elif state == QtGui.QValidator.Intermediate:
- nNumberCheck = False
- color = '#fff79a' # yellow
- else:
- nNumberCheck = False
- color = '#f6989d' # red
- sender.setStyleSheet('QLineEdit { background-color: %s }' % color)
- def checkEmailLine(self, *args, **kwargs):
- global emailCheck
- sender = self.sender()
- validator = sender.validator()
- state = validator.validate(sender.text(), 0)[0]
- if state == QtGui.QValidator.Acceptable:
- emailCheck = True
- color = '#c4df9b' # green
- elif state == QtGui.QValidator.Intermediate:
- emailCheck = False
- color = '#fff79a' # yellow
- else:
- emailCheck = False
- color = '#f6989d' # red
- sender.setStyleSheet('QLineEdit { background-color: %s }' % color)
- def handleID(self):
- self.addDevice()
- global idAdded
- nNumber = ""
- hashText = ''
- if not idAdded:
- nNumber = "%s" % ("%d" % random.randint(0, 9999999)).zfill(7)
- self.checkoutUI.nNumberLine.setText("%s" % nNumber)
- hashText = hashlib.md5(nNumber.encode('utf_8')).hexdigest( print ("HASHTEXT", hashText)
- )
- self.checkoutUI.hashLine.setText(hashText)
- idAdded = True
- #TODO: Change query to reflect RFID information rather than N#
- query = QSqlQuery(db)
- query.prepare('SELECT n_number, email from users where rfid_md5 = ?;')
- query.addBindValue(hashText)
- query.exec_()
- while query.next():
- record = query.record()
- self.checkoutUI.nNumberLine.setText(record.value(0))
- self.checkoutUI.nNumberLine.setDisabled(True)
- self.checkoutUI.emailLine.setText(record.value(1))
- self.checkoutUI.emailLine.setDisabled(True)
- def removeDevice(self):
- requestedDeviceTable = self.checkoutUI.requestedDeviceTable
- requestedDeviceTable.removeRow(requestedDeviceTable.currentRow())
- requestedDeviceTable.setAlternatingRowColors(False)
- requestedDeviceTable.setAlternatingRowColors(True)
- def handleDone(self):
- #write to DB
- #remove from available
- requestedDeviceTable = self.checkoutUI.requestedDeviceTable
- nNumber = self.checkoutUI.nNumberLine.text()
- email = self.checkoutUI.emailLine.text()
- hashText = self.checkoutUI.hashLine.text()
- query = QSqlQuery(db)
- for row in range (0, requestedDeviceTable.rowCount()):
- ID = int(requestedDeviceTable.item(row, 0).text())
- query.prepare('update test_phone_table set borrower_n_number = ?, borrowed = ? where ID = ?')
- query.addBindValue(nNumber)
- query.addBindValue('true')
- query.addBindValue(ID)
- query.exec_()
- query.prepare('insert into users (n_number, email, rfid_md5) values (?, ?, ?)')
- query.addBindValue(nNumber)
- query.addBindValue(email)
- query.addBindValue(hashText)
- query.exec_()
- mainClass.updateAvailableTable()
- mainClass.updateBorrowedTable()
- self.close()
- def handleCancel(self):
- self.close()
- def addDevice(self):
- global availableList
- if availableList:
- randPhone = random.choice(list(availableList.keys()))
- row = self.checkoutUI.requestedDeviceTable.rowCount()
- self.checkoutUI.requestedDeviceTable.setRowCount((row + 1))
- item = QTableWidgetItem()
- item.setData(QtCore.Qt.EditRole,randPhone)
- self.checkoutUI.requestedDeviceTable.setItem(row, 0, item)
- self.checkoutUI.requestedDeviceTable.setItem(row, 1, QTableWidgetItem(availableList[randPhone]))
- self.checkoutUI.requestedDeviceTable.show(
- )
- def send_email():
- gmail_user = "nirmalspeedisfast@gmail.com"
- gmail_pwd = "12814551"
- TO = 'nirmalspeedisfast@gmail.com'
- SUBJECT = "Testing sending using gmail"
- TEXT = "Testing sending mail using gmail servers"
- server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
- server.ehlo()
- server.starttls()
- server.login(gmail_user, gmail_pwd)
- BODY = '\r\n'.join(['To: %s' % TO,
- 'From: %s' % gmail_user,
- 'Subject: %s' % SUBJECT,
- '', TEXT])
- server.sendmail(gmail_user, [TO], BODY)
- print ('email sent')
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- global db
- db = QSqlDatabase.addDatabase("QSQLITE")
- db.setDatabaseName("test.sqlite")
- db.open()
- # db = QSqlDatabase.addDatabase('QODBC')
- # db.setDatabaseName('Driver={SQL Server Native Client 11.0};Server=(localdb)\\v11.0;')
- # ok = db.open()
- lastError = db.lastError().text()
- if not lastError:
- print (lastError)
- global mainClass
- mainClass = Main()
- checkoutWidget = Checkout
- mainClass.show()
- sys.exit(app.exec_())
- uery.next():
- record = query.record()
- self.checkoutUI.nNumberLine.setText(record.value(0))
- self.checkoutUI.nNumberLine.setDisabled(True)
- self.checkoutUI.emailLine.setText(record.value(1))
- self.checkoutUI.emailLine.setDisabled(True)
- def removeDevice(self):
- requestedDeviceTable = self.checkoutUI.requestedDeviceTable
- requestedDeviceTable.removeRow(requestedDeviceTable.currentRow())
- requestedDeviceTable.setAlternatingRowColors(False)
- requestedDeviceTable.setAlternatingRowColors(True)
- def handleDone(self):
- #write to DB
- #remove from available
- requestedDeviceTable = self.checkoutUI.requestedDeviceTable
- nNumber = self.checkoutUI.nNumberLine.text()
- email = self.checkoutUI.emailLine.text()
- hashText = self.checkoutUI.hashLine.text()
- query = QSqlQuery(db)
- for row in range (0, requestedDeviceTable.rowCount()):
- ID = int(requestedDeviceTable.item(row, 0).text())
- query.prepare('update test_phone_table set borrower_n_number = ?, borrowed = ? where ID = ?')
- query.addBindValue(nNumber)
- query.addBindValue('true')
- query.addBindValue(ID)
- query.exec_()
- query.prepare('insert into users (n_number, email, rfid_md5) values (?, ?, ?)')
- query.addBindValue(nNumber)
- query.addBindValue(email)
- query.addBindValue(hashText)
- query.exec_()
- mainClass.updateAvailableTable()
- mainClass.updateBorrowedTable()
- self.close()
- def handleCancel(self):
- self.close()
- def addDevice(self):
- global availableList
- if availableList:
- randPhone = random.choice(list(availableList.keys()))
- row = self.checkoutUI.requestedDeviceTable.rowCount()
- self.checkoutUI.requestedDeviceTable.setRowCount((row + 1))
- item = QTableWidgetItem()
- item.setData(QtCore.Qt.EditRole,randPhone)
- self.checkoutUI.requestedDeviceTable.setItem(row, 0, item)
- self.checkoutUI.requestedDeviceTable.setItem(row, 1, QTableWidgetItem(availableList[randPhone]))
- self.checkoutUI.requestedDeviceTable.show(
- )
- def send_email():
- gmail_user = "nirmalspeedisfast@gmail.com"
- gmail_pwd = "12814551"
- TO = 'nirmalspeedisfast@gmail.com'
- SUBJECT = "Testing sending using gmail"
- TEXT = "Testing sending mail using gmail servers"
- server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
- server.ehlo()
- server.starttls()
- server.login(gmail_user, gmail_pwd)
- BODY = '\r\n'.join(['To: %s' % TO,
- 'From: %s' % gmail_user,
- 'Subject: %s' % SUBJECT,
- '', TEXT])
- server.sendmail(gmail_user, [TO], BODY)
- print ('email sent')
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- global db
- db = QSqlDatabase.addDatabase("QSQLITE")
- db.setDatabaseName("test.sqlite")
- db.open()
- # db = QSqlDatabase.addDatabase('QODBC')
- # db.setDatabaseName('Driver={SQL Server Native Client 11.0};Server=(localdb)\\v11.0;')
- # ok = db.open()
- lastError = db.lastError().text()
- if not lastError:
- print (lastError)
- global mainClass
- mainClass = Main()
- checkoutWidget = Checkout
- mainClass.show()
- sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement