def calculate_book_word_count( self, book_id, input_file ): # collection information for each book in the directory database = Database() print('Calculate word counts for ' + input_file) doc = xml.dom.minidom.parse(input_file) #print(doc.nodeName) #print(doc.firstChild.tagName) p = doc.getElementsByTagName("p") frequency = {} for text in p: alltext = " ".join(z.nodeValue for z in text.childNodes if z.nodeType == z.TEXT_NODE) p_t = str(alltext) # меняем тип на строковый # text_string = p_t.lower() match_pattern = re.findall(r'\b[а-яА-Я]{1,15}\b', p_t) for word in match_pattern: if word.isupper() is True: count_upp = frequency.get(word, 0) frequency[word] = count_upp + 1 else: count = frequency.get(word, 0) frequency[word] = count + 1 database.add_book_word_counts(book_id, frequency, frequency) return
def calculate_book_statistic( self, input_file ): # collection of general statistics for all incoming books database = Database() print('Calculate statistics for ' + input_file) logger_mod.logging.info('Calculate statistics for ' + input_file) doc = xml.dom.minidom.parse(input_file) p = doc.getElementsByTagName("p") count_p = 0 count_p_w = 0 count_text = 0 count_word = 0 upperl = 0 lowercasel = 0 count_low = 0 count_upp = 0 for text in p: alltext = " ".join(z.nodeValue for z in text.childNodes if z.nodeType == z.TEXT_NODE) p_t = str(alltext) # change type to string p_t_new = re.findall(r'\b[a-zA-Zа-яА-Я]{1,15}\b', p_t) #print(p_t) #print(p_t_new) for x in range(len(p_t)): if p_t[x].isalpha( ) is True: # if the symbol is a letter, we count with accumulation count_text += 1 count_p += count_text # add a text variable between paragraphs to the variable for counting paragraphs count_text = 0 # and before the new iteration we nullify the variable #word_text = p_t_new.split() # for words count we divided text on words for w in range(len(p_t_new)): if p_t_new[w].istitle() is True: upperl += 1 elif p_t_new[w].islower() is True: lowercasel += 1 count_low += lowercasel count_upp += upperl count_word += 1 count_p_w += count_word count_word = 0 upperl = 0 lowercasel = 0 #print(w) bookt = doc.getElementsByTagName("book-title") for title in bookt: pass book_name = "".join(t.nodeValue for t in title.childNodes if t.nodeType == t.TEXT_NODE) print("Book name:", book_name) print("Paragraph quantity:" "%d" % p.length) print("Letters quantity:", count_p) print("Words quantaty:", count_p_w) print("Words with Capital letter:", count_upp) print("Words in lowercase:", count_low) database.add_book_statistics(book_name, p.length, count_p_w, count_p, count_upp, count_low)
from watcher import Watcher from database_connector import Database database = Database() database.initialize() watcher = Watcher() watcher.watch("input", "incorrect_input")
class Ui_AddShipper(object): database = Database() def setupUiAddShipper(self, AddShipper): AddShipper.setObjectName("AddShipper") AddShipper.resize(800, 600) AddShipper.setStyleSheet("background-color: rgb(255, 255, 255);") self.centralwidget = QtWidgets.QWidget(AddShipper) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(280, 10, 261, 51)) font = QtGui.QFont() font.setPointSize(35) font.setBold(False) font.setWeight(50) self.label.setFont(font) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.label.setStyleSheet('QLabel {color: #124E78;}') self.listWidgetShippers = QtWidgets.QListWidget(self.centralwidget) self.listWidgetShippers.setGeometry(QtCore.QRect(40, 80, 261, 451)) self.listWidgetShippers.setEditTriggers( QtWidgets.QAbstractItemView.DoubleClicked | QtWidgets.QAbstractItemView.EditKeyPressed | QtWidgets.QAbstractItemView.SelectedClicked) self.listWidgetShippers.setObjectName("listWidgetShippers") self.listWidgetShippers.itemSelectionChanged.connect( self.change_data_add_shipper) self.update_shipper_list() self.groupBox = QtWidgets.QGroupBox(self.centralwidget) self.groupBox.setGeometry(QtCore.QRect(320, 80, 451, 441)) self.groupBox.setTitle("") self.groupBox.setObjectName("groupBox") self.lineEditShipperName = QtWidgets.QLineEdit(self.groupBox) self.lineEditShipperName.setGeometry(QtCore.QRect(10, 30, 441, 21)) self.lineEditShipperName.setObjectName("lineEditShipperName") self.label_2 = QtWidgets.QLabel(self.groupBox) self.label_2.setGeometry(QtCore.QRect(10, 10, 101, 16)) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(self.groupBox) self.label_3.setGeometry(QtCore.QRect(10, 110, 111, 16)) self.label_3.setObjectName("label_3") self.textEditShipperAddress = QtWidgets.QTextEdit(self.groupBox) self.textEditShipperAddress.setGeometry(QtCore.QRect(10, 130, 441, 51)) self.textEditShipperAddress.setObjectName("textEditShipperAddress") self.label_4 = QtWidgets.QLabel(self.groupBox) self.label_4.setGeometry(QtCore.QRect(10, 180, 111, 16)) self.label_4.setObjectName("label_4") self.textEditOriginAddress = QtWidgets.QTextEdit(self.groupBox) self.textEditOriginAddress.setGeometry(QtCore.QRect(10, 200, 441, 51)) self.textEditOriginAddress.setObjectName("textEditOriginAddress") self.label_5 = QtWidgets.QLabel(self.groupBox) self.label_5.setGeometry(QtCore.QRect(10, 250, 141, 16)) self.label_5.setObjectName("label_5") self.textEditDestinationAddress = QtWidgets.QTextEdit(self.groupBox) self.textEditDestinationAddress.setGeometry( QtCore.QRect(10, 270, 441, 51)) self.textEditDestinationAddress.setObjectName( "textEditDestinationAddress") self.label_6 = QtWidgets.QLabel(self.groupBox) self.label_6.setGeometry(QtCore.QRect(10, 320, 141, 16)) self.label_6.setObjectName("label_6") self.textEditComments = QtWidgets.QTextEdit(self.groupBox) self.textEditComments.setGeometry(QtCore.QRect(10, 340, 441, 51)) self.textEditComments.setObjectName("textEditComments") self.pushButtonAddShipper = QtWidgets.QPushButton(self.groupBox) self.pushButtonAddShipper.setGeometry(QtCore.QRect(353, 400, 101, 32)) self.pushButtonAddShipper.setStyleSheet( "background-color: rgb(40, 195, 50);") self.pushButtonAddShipper.setObjectName("pushButtonAddShipper") self.pushButtonAddShipper.clicked.connect(self.add_shipper) self.pushButtonEditShipper = QtWidgets.QPushButton(self.groupBox) self.pushButtonEditShipper.setGeometry(QtCore.QRect(243, 400, 101, 32)) self.pushButtonEditShipper.setStyleSheet( "background-color: rgb(255, 193, 44);") self.pushButtonEditShipper.setObjectName("pushButtonEditShipper") self.pushButtonEditShipper.clicked.connect(self.edit_shipper) self.pushButtonDeleteShipper = QtWidgets.QPushButton(self.groupBox) self.pushButtonDeleteShipper.setGeometry( QtCore.QRect(130, 400, 101, 32)) self.pushButtonDeleteShipper.setStyleSheet( "background-color: rgb(253, 70, 70);") self.pushButtonDeleteShipper.setObjectName("pushButtonDeleteShipper") self.pushButtonDeleteShipper.clicked.connect(self.delete_shipper) self.pushButtonClearForm = QtWidgets.QPushButton(self.groupBox) self.pushButtonClearForm.setGeometry(QtCore.QRect(10, 400, 101, 32)) self.pushButtonClearForm.setStyleSheet( "background-color: rgb(122, 122, 122);") self.pushButtonClearForm.setObjectName("pushButtonClearForm") self.pushButtonClearForm.clicked.connect(self.clear_data_add_shipper) self.lineEditBrokerName = QtWidgets.QLineEdit(self.groupBox) self.lineEditBrokerName.setGeometry(QtCore.QRect(10, 80, 441, 21)) self.lineEditBrokerName.setObjectName("lineEditBrokerName") self.label_7 = QtWidgets.QLabel(self.groupBox) self.label_7.setGeometry(QtCore.QRect(10, 55, 101, 21)) self.label_7.setObjectName("label_7") self.labelError = QtWidgets.QLabel(self.centralwidget) self.labelError.setGeometry(QtCore.QRect(340, 520, 421, 21)) self.labelError.setText("") self.labelError.setObjectName("labelError") self.labelError.setStyleSheet('QLabel {color: #990000;}') self.pushButtonHome = QtWidgets.QPushButton(self.centralwidget) self.pushButtonHome.setGeometry(QtCore.QRect(720, 20, 50, 50)) self.pushButtonHome.setIcon( QtGui.QIcon( "/Users/aarav/Documents/Github/truckerTracker/Dashboard/venv/imgs/144x144.png" )) self.pushButtonHome.setStyleSheet("border-radius: 3px;") self.pushButtonHome.setIconSize(QtCore.QSize(45, 45)) self.pushButtonHome.setText("") self.pushButtonHome.setObjectName("pushButtonHome") self.pushButtonHome.clicked.connect(self.go_home) AddShipper.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(AddShipper) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22)) self.menubar.setObjectName("menubar") AddShipper.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(AddShipper) self.statusbar.setObjectName("statusbar") AddShipper.setStatusBar(self.statusbar) self.retranslateUiAddShipper(AddShipper) QtCore.QMetaObject.connectSlotsByName(AddShipper) def retranslateUiAddShipper(self, AddShipper): _translate = QtCore.QCoreApplication.translate AddShipper.setWindowTitle(_translate("AddShipper", "MainWindow")) self.label.setText(_translate("AddShipper", "ADD SHIPPER")) self.label_2.setText(_translate("AddShipper", "Shipper Name:")) self.label_3.setText(_translate("AddShipper", "Shipper Address:")) self.label_4.setText(_translate("AddShipper", "Origin Address:")) self.label_5.setText(_translate("AddShipper", "Destination Address:")) self.label_6.setText(_translate("AddShipper", "Comments:")) self.pushButtonAddShipper.setText( _translate("AddShipper", "Add Shipper")) self.pushButtonEditShipper.setText( _translate("AddShipper", "Edit Shipper")) self.pushButtonDeleteShipper.setText( _translate("AddShipper", "Delete Shipper")) self.pushButtonClearForm.setText(_translate("AddShipper", "Clear Form")) self.label_7.setText(_translate("AddShipper", "Broker Name:")) def go_home(self): print("HOME PRESSED!") def update_shipper_list(self): self.listWidgetShippers.clear() shipper_list = self.database.get_shippers() for shipper in shipper_list: shipper_description = "{} - {} - {}".format( shipper.shipper_id, shipper.name, shipper.address) self.listWidgetShippers.addItem(shipper_description) def change_data_add_shipper(self): item = self.listWidgetShippers.selectedItems() if len(item) == 0: return else: list = item[0].text().split() shipper = self.database.get_shipper(list[0]) self.lineEditShipperName.setText(shipper.name) self.lineEditBrokerName.setText(shipper.broker_name) self.textEditShipperAddress.setText(shipper.address) self.textEditOriginAddress.setText(shipper.origin) self.textEditDestinationAddress.setText(shipper.destination) self.textEditComments.setText(shipper.comments) def clear_data_add_shipper(self): self.listWidgetShippers.clearSelection() self.lineEditShipperName.setText("") self.lineEditBrokerName.setText("") self.textEditShipperAddress.setText("") self.textEditOriginAddress.setText("") self.textEditDestinationAddress.setText("") self.textEditComments.setText("") self.labelError.setText("") def edit_shipper(self): item = self.listWidgetShippers.selectedItems() if len(item) == 0: self.labelError.setText("ERROR PLEASE SELECT SHIPPER TO EDIT!") else: confirm = self.showdialog() if confirm: list = item[0].text().split() shipper_id = list[0] name = self.lineEditShipperName.text() broker_name = self.lineEditBrokerName.text() address = str(self.textEditShipperAddress.toPlainText()) origin = str(self.textEditOriginAddress.toPlainText()) destination = str( self.textEditDestinationAddress.toPlainText()) comments = str(self.textEditComments.toPlainText()) self.database.update_shipper(shipper_id, name, broker_name, address, origin, destination, comments) self.update_shipper_list() self.clear_data_add_shipper() return else: return def delete_shipper(self): item = self.listWidgetShippers.selectedItems() if len(item) == 0: self.labelError.setText("ERROR PLEASE SELECT SHIPPER TO DELETE!") else: confirm = self.showdialog() if confirm: list = item[0].text().split() shipper_id = list[0] self.database.delete_shipper(shipper_id) self.update_shipper_list() self.clear_data_add_shipper() return else: return def add_shipper(self): name = self.lineEditShipperName.text() broker_name = self.lineEditBrokerName.text() address = str(self.textEditShipperAddress.toPlainText()) origin = str(self.textEditOriginAddress.toPlainText()) destination = str(self.textEditDestinationAddress.toPlainText()) comments = str(self.textEditComments.toPlainText()) if (name == ""): self.labelError.setText("Error: Name Cannot be blank!") return if (address == ""): self.labelError.setText("Error: Address Cannot be blank") return self.database.add_shipper(name, broker_name, address, origin, destination, comments) self.update_shipper_list() self.clear_data_add_shipper() return def showdialog(self): msg = QMessageBox() msg.setIcon(QMessageBox.Warning) msg.setText("Make Changes?") msg.setInformativeText("The action CANNOT be undone!") msg.setWindowTitle("Confirmation") msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No) retval = msg.exec_() if retval == QMessageBox.Yes: return True else: return False
class Ui_AddShipper(object): database = Database() def setupUiGenerate(self, AddShipper): AddShipper.setObjectName("AddShipper") AddShipper.resize(809, 633) AddShipper.setStyleSheet("background-color: rgb(255, 255, 255);") self.centralwidget = QtWidgets.QWidget(AddShipper) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(240, 20, 331, 51)) font = QtGui.QFont() font.setPointSize(35) font.setBold(False) font.setWeight(50) self.label.setFont(font) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.label.setStyleSheet('QLabel {color: #124E78;}') self.groupBox = QtWidgets.QGroupBox(self.centralwidget) self.groupBox.setGeometry(QtCore.QRect(170, 80, 461, 491)) self.groupBox.setTitle("") self.groupBox.setObjectName("groupBox") self.label_2 = QtWidgets.QLabel(self.groupBox) self.label_2.setGeometry(QtCore.QRect(10, 10, 101, 21)) self.label_2.setObjectName("label_2") self.label_6 = QtWidgets.QLabel(self.groupBox) self.label_6.setGeometry(QtCore.QRect(10, 130, 141, 21)) self.label_6.setObjectName("label_6") self.textEditSubmitName = QtWidgets.QLineEdit(self.groupBox) self.textEditSubmitName.setGeometry(QtCore.QRect(110, 130, 341, 21)) self.textEditSubmitName.setObjectName("textEditSubmitName") self.pushButtonGenerateInvoice = QtWidgets.QPushButton(self.groupBox) self.pushButtonGenerateInvoice.setGeometry( QtCore.QRect(160, 230, 131, 32)) self.pushButtonGenerateInvoice.setStyleSheet( "background-color: rgb(40, 195, 50);") self.pushButtonGenerateInvoice.setObjectName( "pushButtonGenerateInvoice") self.pushButtonGenerateInvoice.clicked.connect(self.generate_invoice) self.spinBoxShipper = QtWidgets.QComboBox(self.groupBox) self.spinBoxShipper.setGeometry(QtCore.QRect(110, 10, 341, 22)) self.spinBoxShipper.setObjectName("spinBoxShipper") self.shipername_list = self.database.get_shippernames() self.spinBoxShipper.setStyleSheet( "background-color: rgb(255, 255, 255); selection-background-color: #4199D8; text-align: left; color: rgb(0, 0, 0);" ) self.spinBoxShipper.addItems(self.shipername_list) self.dateEditTo = QtWidgets.QDateEdit(self.groupBox) self.dateEditTo.setGeometry(QtCore.QRect(110, 70, 110, 22)) self.dateEditTo.setObjectName("dateEditTo") self.dateEditTo.setDateTime(QtCore.QDateTime.currentDateTime()) self.label_7 = QtWidgets.QLabel(self.groupBox) self.label_7.setGeometry(QtCore.QRect(10, 70, 71, 21)) self.label_7.setObjectName("label_7") self.label_13 = QtWidgets.QLabel(self.groupBox) self.label_13.setGeometry(QtCore.QRect(10, 40, 71, 21)) self.label_13.setObjectName("label_13") self.dateEditFrom = QtWidgets.QDateEdit(self.groupBox) self.dateEditFrom.setGeometry(QtCore.QRect(110, 40, 110, 22)) self.dateEditFrom.setObjectName("dateEditFrom") self.dateEditFrom.setDateTime(QtCore.QDateTime.currentDateTime()) self.label_23 = QtWidgets.QLabel(self.groupBox) self.label_23.setGeometry(QtCore.QRect(10, 160, 141, 21)) self.label_23.setObjectName("label_23") self.textEditFileName = QtWidgets.QLineEdit(self.groupBox) self.textEditFileName.setGeometry(QtCore.QRect(110, 160, 341, 21)) self.textEditFileName.setObjectName("textEditFileName") self.labelError = QtWidgets.QLabel(self.groupBox) self.labelError.setGeometry(QtCore.QRect(20, 200, 421, 21)) self.labelError.setText("") self.labelError.setObjectName("labelError") self.labelError.setStyleSheet('QLabel {color: #990000;}') self.labelError.setAlignment(QtCore.Qt.AlignCenter) self.dateEditTo_2 = QtWidgets.QDateEdit(self.groupBox) self.dateEditTo_2.setGeometry(QtCore.QRect(110, 350, 110, 22)) self.dateEditTo_2.setObjectName("dateEditTo_2") self.dateEditTo_2.setDateTime(QtCore.QDateTime.currentDateTime()) self.label_14 = QtWidgets.QLabel(self.groupBox) self.label_14.setGeometry(QtCore.QRect(10, 320, 71, 21)) self.label_14.setObjectName("label_14") self.spinBoxDriverName = QtWidgets.QComboBox(self.groupBox) self.spinBoxDriverName.setGeometry(QtCore.QRect(110, 290, 341, 22)) self.spinBoxDriverName.setObjectName("spinBoxDriverName") self.drivername_list = self.database.get_usernames() self.spinBoxDriverName.setStyleSheet( "background-color: rgb(255, 255, 255); selection-background-color: #4199D8; text-align: left; color: rgb(0, 0, 0);" ) self.spinBoxDriverName.addItems(self.drivername_list) self.label_3 = QtWidgets.QLabel(self.groupBox) self.label_3.setGeometry(QtCore.QRect(10, 290, 91, 21)) self.label_3.setObjectName("label_3") self.textEditFileName_2 = QtWidgets.QLineEdit(self.groupBox) self.textEditFileName_2.setGeometry(QtCore.QRect(110, 380, 341, 21)) self.textEditFileName_2.setObjectName("textEditFileName_2") self.label_8 = QtWidgets.QLabel(self.groupBox) self.label_8.setGeometry(QtCore.QRect(10, 350, 71, 21)) self.label_8.setObjectName("label_8") self.label_24 = QtWidgets.QLabel(self.groupBox) self.label_24.setGeometry(QtCore.QRect(10, 380, 91, 21)) self.label_24.setObjectName("label_24") self.dateEditFrom_2 = QtWidgets.QDateEdit(self.groupBox) self.dateEditFrom_2.setGeometry(QtCore.QRect(110, 320, 110, 22)) self.dateEditFrom_2.setObjectName("dateEditFrom_2") self.dateEditFrom_2.setDateTime(QtCore.QDateTime.currentDateTime()) self.labelError_2 = QtWidgets.QLabel(self.groupBox) self.labelError_2.setGeometry(QtCore.QRect(20, 420, 421, 21)) self.labelError_2.setText("") self.labelError_2.setObjectName("labelError_2") self.labelError_2.setStyleSheet('QLabel {color: #990000;}') self.labelError_2.setAlignment(QtCore.Qt.AlignCenter) self.pushButtonGenerateDriver = QtWidgets.QPushButton(self.groupBox) self.pushButtonGenerateDriver.setGeometry( QtCore.QRect(160, 450, 131, 32)) self.pushButtonGenerateDriver.setStyleSheet( "background-color: rgb(40, 195, 50);") self.pushButtonGenerateDriver.setObjectName("pushButtonGenerateDriver") self.pushButtonGenerateDriver.clicked.connect(self.generate_driver_log) self.label_4 = QtWidgets.QLabel(self.groupBox) self.label_4.setGeometry(QtCore.QRect(10, 100, 91, 21)) self.label_4.setObjectName("label_4") self.label_5 = QtWidgets.QLabel(self.groupBox) self.label_5.setGeometry(QtCore.QRect(110, 100, 16, 21)) self.label_5.setObjectName("label_5") self.lineEditRate = QtWidgets.QLineEdit(self.groupBox) self.lineEditRate.setGeometry(QtCore.QRect(130, 100, 71, 21)) self.lineEditRate.setObjectName("lineEditRate") self.pushButtonHome = QtWidgets.QPushButton(self.centralwidget) self.pushButtonHome.setGeometry(QtCore.QRect(720, 20, 50, 50)) self.pushButtonHome.setIcon( QtGui.QIcon( "/Users/aarav/Documents/Github/truckerTracker/Dashboard/venv/imgs/144x144.png" )) self.pushButtonHome.setStyleSheet("border-radius: 3px;") self.pushButtonHome.setIconSize(QtCore.QSize(45, 45)) self.pushButtonHome.setText("") self.pushButtonHome.setObjectName("pushButtonHome") AddShipper.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(AddShipper) self.menubar.setGeometry(QtCore.QRect(0, 0, 809, 22)) self.menubar.setObjectName("menubar") AddShipper.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(AddShipper) self.statusbar.setObjectName("statusbar") AddShipper.setStatusBar(self.statusbar) self.retranslateUiGenerate(AddShipper) QtCore.QMetaObject.connectSlotsByName(AddShipper) def clear_form(self): self.textEditFileName.setText("") self.textEditSubmitName.setText("") self.labelError.setText("") self.textEditFileName_2.setText("") self.labelError_2.setText("") self.lineEditRate.setText("") def generate_driver_log(self): filename = self.textEditFileName_2.text() if filename == "": self.labelError_2.setText("Error: Please enter file name") else: temp = self.dateEditFrom_2.date() date_from = temp.toPyDate() temp2 = self.dateEditTo_2.date() date_to = temp2.toPyDate() driver_name = self.spinBoxDriverName.currentText() data = self.database.get_driver_logs(driver_name, date_from, date_to) filename += ".xlsx" workbook = xlsxwriter.Workbook(filename) worksheet = workbook.add_worksheet() header_format = workbook.add_format() header_format.set_bold() header_format.set_align('left') header_format.set_font_size(21) header_format.set_bg_color('#a1a7af') money = workbook.add_format({'num_format': '$0.00'}) worksheet.merge_range('A1:E1', 'Pullin\' Freight, LLC', header_format) title_format = workbook.add_format() title_format.set_bold() title_format.set_align('left') title_format.set_font_size(15) worksheet.write( 'A2:C2', 'Driver Log For: {}'.format(driver_name.capitalize()), title_format) worksheet.write('A3:C3', 'Rate:', title_format) worksheet.write('B3', 20, money) title_format_2 = workbook.add_format() title_format_2.set_bold() title_format_2.set_align('right') title_format_2.set_font_size(13) title_format_2.set_bg_color('#a1a7af') worksheet.merge_range( 'F1:J1', 'Log from: {} to: {}'.format(str(date_from), str(date_to)), title_format_2) row = 3 col = 0 table_title_format = workbook.add_format() table_title_format.set_bold() table_title_format.set_color('#6d6d6d') table_title_format.set_align('center') table_title_format.set_font_size(13) worksheet.write(row, col, 'Date', table_title_format) worksheet.write(row, col + 1, 'Invoice #', table_title_format) worksheet.write(row, col + 2, 'Shipper', table_title_format) worksheet.write(row, col + 3, 'Origin', table_title_format) worksheet.write(row, col + 4, 'Destination', table_title_format) worksheet.write(row, col + 5, 'Hours', table_title_format) worksheet.write(row, col + 6, 'Sub-Total', table_title_format) table_content_even = workbook.add_format() table_content_even.set_bg_color('#dbdbdb') table_content_even.set_font_size(11) table_content_odd = workbook.add_format() table_content_odd.set_bg_color('#ffffff') table_content_odd.set_font_size(11) table_content_even_money = workbook.add_format() table_content_even_money.set_bg_color('#dbdbdb') table_content_even_money.set_font_size(11) table_content_even_money.set_num_format('$0.00') table_content_odd_money = workbook.add_format() table_content_odd_money.set_bg_color('#ffffff') table_content_odd_money.set_font_size(11) table_content_odd_money.set_num_format('$0.00') row = 4 theme = table_content_even money = table_content_even_money for bol in data: if row % 2 == 0: theme = table_content_even money = table_content_even_money else: theme = table_content_odd money = table_content_odd_money if bol.loads == 0: selected_payment = bol.hours_worked if bol.hours_worked == 0: selected_payment = bol.loads row_excel = row + 1 worksheet.write(row, col, str(bol.date), theme) print(str(bol.date)) worksheet.write(row, col + 1, bol.bill_number, theme) worksheet.write(row, col + 2, bol.shipper_name, theme) worksheet.write(row, col + 3, bol.origin, theme) worksheet.write(row, col + 4, bol.destination, theme) worksheet.write(row, col + 5, selected_payment, theme) worksheet.write(row, col + 6, '=B3*F{}'.format(row_excel), money) row += 1 total = workbook.add_format() total.set_bold() total.set_num_format('$0.00') total.set_font_size(12) row_excel = row + 1 worksheet.write(row, 6, '=SUM(G5:G{})'.format(row), total) worksheet.write(row, 5, '=SUM(F5:F{})'.format(row)) worksheet.write(row, 3, 'Grand Total:', total) end = workbook.add_format() end.set_bg_color('#319e3b') row += 1 row_excel = row + 1 worksheet.merge_range('A{}:G{}'.format(row_excel, row_excel), '', end) workbook.close() self.clear_form() def generate_invoice(self): filename = self.textEditFileName.text() submitter = self.textEditSubmitName.text() rate = self.lineEditRate.text() print(filename, submitter) if filename == "" or submitter == "" or rate == "": self.labelError.setText("Error: Please fill out all fields") else: temp = self.dateEditFrom.date() date_from = temp.toPyDate() temp2 = self.dateEditTo.date() date_to = temp2.toPyDate() shipper_name = self.spinBoxShipper.currentText() data = self.database.get_bol_invoiced(shipper_name, date_from, date_to) rate = float(rate) / 100 print(data) filename += ".xlsx" workbook = xlsxwriter.Workbook(filename) worksheet = workbook.add_worksheet() money = workbook.add_format({'num_format': '$#,###.#0'}) header_format = workbook.add_format() header_format.set_bold() header_format.set_align('left') header_format.set_font_size(21) header_format.set_bg_color('#a1a7af') worksheet.merge_range('A1:E1', 'Pullin\' Freight, LLC', header_format) title_format = workbook.add_format() title_format.set_bold() title_format.set_align('left') title_format.set_font_size(15) worksheet.write('A2:C2', 'Billed to:', title_format) worksheet.write('A3:C3', 'Address:', title_format) title_format_2 = workbook.add_format() title_format_2.set_bold() title_format_2.set_align('right') title_format_2.set_font_size(13) title_format_2.set_bg_color('#a1a7af') worksheet.merge_range( 'F1:J1', 'Invoice from: {} to: {}'.format(str(date_from), str(date_to)), title_format_2) row = 3 col = 0 table_title_format = workbook.add_format() table_title_format.set_bold() table_title_format.set_color('#6d6d6d') table_title_format.set_align('center') table_title_format.set_font_size(13) worksheet.write(row, col, 'Date', table_title_format) worksheet.write(row, col + 1, 'Invoice #', table_title_format) worksheet.write(row, col + 2, 'Shipper', table_title_format) worksheet.write(row, col + 3, 'Origin', table_title_format) worksheet.write(row, col + 4, 'Destination', table_title_format) worksheet.write(row, col + 5, 'Loads/Hours', table_title_format) worksheet.write(row, col + 6, 'Rate', table_title_format) worksheet.write(row, col + 7, 'Sub-Total', table_title_format) worksheet.write(row, col + 8, '-{}% Broker Fee'.format(rate * 100), table_title_format) worksheet.write(row, col + 9, 'Total', table_title_format) table_content_even = workbook.add_format() table_content_even.set_bg_color('#dbdbdb') table_content_even.set_font_size(11) table_content_odd = workbook.add_format() table_content_odd.set_bg_color('#ffffff') table_content_odd.set_font_size(11) table_content_even_money = workbook.add_format() table_content_even_money.set_bg_color('#dbdbdb') table_content_even_money.set_font_size(11) table_content_even_money.set_num_format('$0.00') table_content_odd_money = workbook.add_format() table_content_odd_money.set_bg_color('#ffffff') table_content_odd_money.set_font_size(11) table_content_odd_money.set_num_format('$0.00') row = 4 theme = table_content_even money = table_content_even_money # Iterate over the data and write it out row by row. for bol in data: if row % 2 == 0: theme = table_content_even money = table_content_even_money else: theme = table_content_odd money = table_content_odd_money if bol.loads == 0: selected_payment = bol.hours_worked if bol.hours_worked == 0: selected_payment = bol.loads row_excel = row + 1 worksheet.write(row, col, str(bol.date), theme) print(str(bol.date)) worksheet.write(row, col + 1, bol.bill_number, theme) worksheet.write(row, col + 2, bol.shipper_name, theme) worksheet.write(row, col + 3, bol.origin, theme) worksheet.write(row, col + 4, bol.destination, theme) worksheet.write(row, col + 5, selected_payment, theme) worksheet.write(row, col + 6, bol.rate, money) worksheet.write(row, col + 7, '=F{}*G{}'.format(row_excel, row_excel), money) worksheet.write(row, col + 8, '=H{}*{}'.format(row_excel, rate), money) worksheet.write(row, col + 9, '=H{}-I{}'.format(row_excel, row_excel), money) row += 1 total = workbook.add_format() total.set_bold() total.set_num_format('$0.00') total.set_font_size(12) row_excel = row + 1 worksheet.write(row, 9, '=SUM(J5:J{})'.format(row), total) worksheet.write(row, 8, 'Grand Total:', total) row += 2 row_excel = row + 1 worksheet.merge_range( 'A{}:J{}'.format(row_excel, row_excel), 'Submitted: {} by {}'.format(str(datetime.date.today()), submitter)) end = workbook.add_format() end.set_bg_color('#319e3b') row += 1 row_excel = row + 1 worksheet.merge_range('A{}:J{}'.format(row_excel, row_excel), '', end) workbook.close() self.clear_form() def retranslateUiGenerate(self, AddShipper): _translate = QtCore.QCoreApplication.translate AddShipper.setWindowTitle(_translate("AddShipper", "MainWindow")) self.label.setText(_translate("AddShipper", "GENERATE LOGS")) self.label_2.setText(_translate("AddShipper", "Shipper Name:")) self.label_6.setText(_translate("AddShipper", "Submitted By:")) self.pushButtonGenerateInvoice.setText( _translate("AddShipper", "Generate Invoice")) self.label_7.setText(_translate("AddShipper", "To Date:")) self.label_13.setText(_translate("AddShipper", "From Date:")) self.label_23.setText(_translate("AddShipper", "File Name:")) self.label_14.setText(_translate("AddShipper", "From Date:")) self.label_3.setText(_translate("AddShipper", "Driver Name:")) self.label_8.setText(_translate("AddShipper", "To Date:")) self.label_24.setText(_translate("AddShipper", "File Name:")) self.pushButtonGenerateDriver.setText( _translate("AddShipper", "Generate Driver Log")) self.label_4.setText(_translate("AddShipper", "Brokerage")) self.label_5.setText(_translate("AddShipper", "%"))
class Ui_DriverLog(object): database = Database() def setupUiDriverLog(self, DriverLog): DriverLog.setObjectName("DriverLog") DriverLog.resize(809, 633) DriverLog.setStyleSheet("background-color: rgb(255, 255, 255);") self.centralwidget = QtWidgets.QWidget(DriverLog) self.centralwidget.setObjectName("centralwidget") self.labelTitle = QtWidgets.QLabel(self.centralwidget) self.labelTitle.setGeometry(QtCore.QRect(280, 10, 261, 51)) font = QtGui.QFont() font.setPointSize(35) font.setBold(False) font.setWeight(50) self.labelTitle.setFont(font) self.labelTitle.setAlignment(QtCore.Qt.AlignCenter) self.labelTitle.setObjectName("labelTitle") self.labelTitle.setStyleSheet('QLabel {color: #124E78;}') self.groupBox = QtWidgets.QGroupBox(self.centralwidget) self.groupBox.setGeometry(QtCore.QRect(20, 330, 761, 251)) self.groupBox.setTitle("") self.groupBox.setObjectName("groupBox") self.pushButtonEditDriver = QtWidgets.QPushButton(self.groupBox) self.pushButtonEditDriver.setGeometry(QtCore.QRect(380, 210, 114, 32)) self.pushButtonEditDriver.setStyleSheet("background-color: rgb(255, 193, 44);") self.pushButtonEditDriver.setObjectName("pushButtonEditDriver") self.pushButtonEditDriver.clicked.connect(self.edit_driver) self.pushButtonDeleteUser = QtWidgets.QPushButton(self.groupBox) self.pushButtonDeleteUser.setGeometry(QtCore.QRect(260, 210, 114, 32)) self.pushButtonDeleteUser.setStyleSheet("background-color: rgb(253, 70, 70);") self.pushButtonDeleteUser.setObjectName("pushButtonDeleteUser") self.pushButtonDeleteUser.clicked.connect(self.delete_driver) self.label_2 = QtWidgets.QLabel(self.groupBox) self.label_2.setGeometry(QtCore.QRect(60, 30, 81, 21)) self.label_2.setObjectName("label_2") self.lineEditFirstName = QtWidgets.QLineEdit(self.groupBox) self.lineEditFirstName.setGeometry(QtCore.QRect(150, 30, 171, 21)) self.lineEditFirstName.setObjectName("lineEditFirstName") self.lineEditLastName = QtWidgets.QLineEdit(self.groupBox) self.lineEditLastName.setGeometry(QtCore.QRect(510, 30, 211, 21)) self.lineEditLastName.setText("") self.lineEditLastName.setObjectName("lineEditLastName") self.label_3 = QtWidgets.QLabel(self.groupBox) self.label_3.setGeometry(QtCore.QRect(410, 30, 91, 21)) self.label_3.setObjectName("label_3") self.label_4 = QtWidgets.QLabel(self.groupBox) self.label_4.setGeometry(QtCore.QRect(60, 60, 81, 21)) self.label_4.setObjectName("label_4") self.labelUsername = QtWidgets.QLabel(self.groupBox) self.labelUsername.setGeometry(QtCore.QRect(150, 60, 171, 21)) self.labelUsername.setText("") self.labelUsername.setObjectName("labelUsername") self.label_5 = QtWidgets.QLabel(self.groupBox) self.label_5.setGeometry(QtCore.QRect(410, 60, 101, 21)) self.label_5.setObjectName("label_5") self.lineEditPhoneNumber = QtWidgets.QLineEdit(self.groupBox) self.lineEditPhoneNumber.setGeometry(QtCore.QRect(510, 60, 211, 21)) self.lineEditPhoneNumber.setObjectName("lineEditPhoneNumber") self.lineEditEmail = QtWidgets.QLineEdit(self.groupBox) self.lineEditEmail.setGeometry(QtCore.QRect(150, 90, 171, 21)) self.lineEditEmail.setText("") self.lineEditEmail.setObjectName("lineEditEmail") self.label_6 = QtWidgets.QLabel(self.groupBox) self.label_6.setGeometry(QtCore.QRect(60, 90, 71, 21)) self.label_6.setObjectName("label_6") self.label_7 = QtWidgets.QLabel(self.groupBox) self.label_7.setGeometry(QtCore.QRect(410, 90, 91, 21)) self.label_7.setObjectName("label_7") self.textEditAddress = QtWidgets.QTextEdit(self.groupBox) self.textEditAddress.setGeometry(QtCore.QRect(510, 90, 211, 74)) self.textEditAddress.setObjectName("textEditAddress") self.labelLicenseNumber = QtWidgets.QLabel(self.groupBox) self.labelLicenseNumber.setGeometry(QtCore.QRect(150, 120, 171, 21)) self.labelLicenseNumber.setText("") self.labelLicenseNumber.setObjectName("labelLicenseNumber") self.label_8 = QtWidgets.QLabel(self.groupBox) self.label_8.setGeometry(QtCore.QRect(60, 120, 81, 21)) self.label_8.setObjectName("label_8") self.label_9 = QtWidgets.QLabel(self.groupBox) self.label_9.setGeometry(QtCore.QRect(60, 150, 81, 21)) self.label_9.setObjectName("label_9") self.labelLicenseExpiration = QtWidgets.QLabel(self.groupBox) self.labelLicenseExpiration.setGeometry(QtCore.QRect(150, 150, 171, 21)) self.labelLicenseExpiration.setText("") self.labelLicenseExpiration.setObjectName("labelLicenseExpiration") self.pushButtonHome = QtWidgets.QPushButton(self.centralwidget) self.pushButtonHome.setGeometry(QtCore.QRect(720, 20, 50, 50)) self.pushButtonHome.setIcon( QtGui.QIcon("/Users/aarav/Documents/Github/truckerTracker/Dashboard/venv/imgs/144x144.png")) self.pushButtonHome.setStyleSheet("border-radius: 3px;") self.pushButtonHome.setIconSize(QtCore.QSize(45, 45)) self.pushButtonHome.setText("") self.pushButtonHome.setObjectName("pushButtonHome") self.tableWidgetUsers = QtWidgets.QTableWidget(self.centralwidget) self.tableWidgetUsers.setGeometry(QtCore.QRect(20, 70, 771, 261)) self.tableWidgetUsers.setObjectName("tableWidgetUsers") self.tableWidgetUsers.setColumnCount(9) self.tableWidgetUsers.setSelectionBehavior(QtWidgets.QTableWidget.SelectRows) self.tableWidgetUsers.itemSelectionChanged.connect(self.change_data_driver_log) column_titles = ['id', 'first name', 'last name','username','phone number', 'email', 'address', 'license no.', 'license exp.'] counter = 0 for title in column_titles: item = QtWidgets.QTableWidgetItem(title) item.setBackground(QtGui.QColor(211,211,211)) self.tableWidgetUsers.setHorizontalHeaderItem(counter,item) counter += 1 self.update_user_list() header = self.tableWidgetUsers.resizeColumnToContents(0) DriverLog.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(DriverLog) self.menubar.setGeometry(QtCore.QRect(0, 0, 809, 22)) self.menubar.setObjectName("menubar") DriverLog.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(DriverLog) self.statusbar.setObjectName("statusbar") DriverLog.setStatusBar(self.statusbar) self.retranslateUiDriverLog(DriverLog) QtCore.QMetaObject.connectSlotsByName(DriverLog) def retranslateUiDriverLog(self, DriverLog): _translate = QtCore.QCoreApplication.translate DriverLog.setWindowTitle(_translate("DriverLog", "MainWindow")) self.labelTitle.setText(_translate("DriverLog", "DRIVER LOG")) self.pushButtonEditDriver.setText(_translate("DriverLog", "Edit User")) self.pushButtonDeleteUser.setText(_translate("DriverLog", "Delete User")) self.label_2.setText(_translate("DriverLog", "First Name:")) self.label_3.setText(_translate("DriverLog", "Last Name:")) self.label_4.setText(_translate("DriverLog", "Username:"******"DriverLog", "Phone Number:")) self.label_6.setText(_translate("DriverLog", "Email:")) self.label_7.setText(_translate("DriverLog", "Address:")) self.label_8.setText(_translate("DriverLog", "License No.:")) self.label_9.setText(_translate("DriverLog", "License Exp.:")) def change_data_driver_log(self): item = self.tableWidgetUsers.selectedItems() if len(item) == 0: return else: #time = str(self.selected_job.start_time).split(':') #self.timeEditStartTime.setTime(QtCore.QTime(int(time[0]), int(time[1]))) self.lineEditFirstName.setText(str(item[1].text())) self.lineEditLastName.setText(str(item[2].text())) self.labelUsername.setText(str(item[3].text())) self.lineEditPhoneNumber.setText(str(item[4].text())) self.lineEditEmail.setText(str(item[5].text())) self.textEditAddress.setText(str(item[6].text())) self.labelLicenseNumber.setText(str(item[7].text())) self.labelLicenseExpiration.setText(str(item[8].text())) return def update_user_list(self): for i in reversed(range(self.tableWidgetUsers.rowCount())): self.tableWidgetUsers.removeRow(i) users_list = self.database.get_users() for row_number in range(len(users_list)): self.tableWidgetUsers.insertRow(row_number) user = users_list[row_number] self.tableWidgetUsers.setItem(row_number, 0, QtWidgets.QTableWidgetItem(str(user.user_id))) self.tableWidgetUsers.setItem(row_number, 1, QtWidgets.QTableWidgetItem(str(user.first_name))) self.tableWidgetUsers.setItem(row_number, 2, QtWidgets.QTableWidgetItem(str(user.last_name))) self.tableWidgetUsers.setItem(row_number, 3, QtWidgets.QTableWidgetItem(str(user.username))) self.tableWidgetUsers.setItem(row_number, 4, QtWidgets.QTableWidgetItem(str(user.phone_number))) self.tableWidgetUsers.setItem(row_number, 5, QtWidgets.QTableWidgetItem(str(user.email))) self.tableWidgetUsers.setItem(row_number, 6, QtWidgets.QTableWidgetItem(str(user.address))) self.tableWidgetUsers.setItem(row_number, 7, QtWidgets.QTableWidgetItem(str(user.license_number))) self.tableWidgetUsers.setItem(row_number, 8, QtWidgets.QTableWidgetItem(str(user.license_expire))) return def edit_driver(self): item = self.tableWidgetUsers.selectedItems() if len(item) == 0: print("ERROR PLEASE SELECT DRIVER TO EDIT OR ADD NEW DRIVER!") else: confirm = self.showdialog() if confirm: user_id = int(item[0].text()) first_name = self.lineEditFirstName.text() last_name = self.lineEditLastName.text() phone_number = self.lineEditPhoneNumber.text() email = self.lineEditEmail.text() address = str(self.textEditAddress.toPlainText()) self.database.update_user(user_id, first_name, last_name, phone_number, email, address) self.update_user_list() self.clear_data_driver_log() return else: return def delete_driver(self): item = self.tableWidgetUsers.selectedItems() if len(item) == 0: print("ERROR PLEASE SELECT DRIVER TO DELETE OR ADD NEW DRIVER!") else: confirm = self.showdialog() if confirm: user_id = int(item[0].text()) self.database.delete_user(user_id) self.update_user_list() self.clear_data_driver_log() return else: return def showdialog(self): msg = QMessageBox() msg.setIcon(QMessageBox.Warning) msg.setText("Make Changes?") msg.setInformativeText("The action CANNOT be undone!") msg.setWindowTitle("Confirmation") msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No) retval = msg.exec_() if retval == QMessageBox.Yes: return True else: return False def clear_data_driver_log(self): self.lineEditFirstName.setText("") self.lineEditLastName.setText("") self.labelUsername.setText("") self.lineEditPhoneNumber.setText("") self.lineEditEmail.setText("") self.textEditAddress.setText("") self.labelLicenseNumber.setText("") self.labelLicenseExpiration.setText("")
class Ui_Bill_of_Lading(object): database = Database() def setupUiBOL(self, Bill_of_Lading): Bill_of_Lading.setObjectName("Bill_of_Lading") Bill_of_Lading.resize(809, 633) Bill_of_Lading.setStyleSheet("background-color: rgb(255, 255, 255);") self.centralwidget = QtWidgets.QWidget(Bill_of_Lading) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(270, 10, 281, 51)) font = QtGui.QFont() font.setPointSize(35) font.setBold(False) font.setWeight(50) self.label.setFont(font) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.label.setStyleSheet('QLabel {color: #124E78;}') self.groupBox = QtWidgets.QGroupBox(self.centralwidget) self.groupBox.setGeometry(QtCore.QRect(30, 320, 741, 261)) self.groupBox.setTitle("") self.groupBox.setObjectName("groupBox") self.label_2 = QtWidgets.QLabel(self.groupBox) self.label_2.setGeometry(QtCore.QRect(20, 10, 101, 21)) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(self.groupBox) self.label_3.setGeometry(QtCore.QRect(20, 40, 81, 21)) self.label_3.setObjectName("label_3") self.label_4 = QtWidgets.QLabel(self.groupBox) self.label_4.setGeometry(QtCore.QRect(310, 130, 101, 16)) self.label_4.setObjectName("label_4") self.textEditOriginAddress = QtWidgets.QTextEdit(self.groupBox) self.textEditOriginAddress.setGeometry(QtCore.QRect(420, 130, 301, 21)) self.textEditOriginAddress.setObjectName("textEditOriginAddress") self.label_5 = QtWidgets.QLabel(self.groupBox) self.label_5.setGeometry(QtCore.QRect(310, 160, 101, 16)) self.label_5.setObjectName("label_5") self.textEditDestinationAddress = QtWidgets.QTextEdit(self.groupBox) self.textEditDestinationAddress.setGeometry( QtCore.QRect(420, 160, 301, 21)) self.textEditDestinationAddress.setObjectName( "textEditDestinationAddress") self.pushButtonAddJob = QtWidgets.QPushButton(self.groupBox) self.pushButtonAddJob.setGeometry(QtCore.QRect(500, 220, 114, 32)) self.pushButtonAddJob.setStyleSheet( "background-color: rgb(40, 195, 50);") self.pushButtonAddJob.setObjectName("pushButtonAddJob") self.pushButtonAddJob.clicked.connect(self.add_bol) self.pushButtonEditJob = QtWidgets.QPushButton(self.groupBox) self.pushButtonEditJob.setGeometry(QtCore.QRect(380, 220, 114, 32)) self.pushButtonEditJob.setStyleSheet( "background-color: rgb(255, 193, 44);") self.pushButtonEditJob.setObjectName("pushButtonEditJob") self.pushButtonEditJob.clicked.connect(self.edit_bol) self.pushButtonDeleteJob = QtWidgets.QPushButton(self.groupBox) self.pushButtonDeleteJob.setGeometry(QtCore.QRect(260, 220, 114, 32)) self.pushButtonDeleteJob.setStyleSheet( "background-color: rgb(253, 70, 70);") self.pushButtonDeleteJob.setObjectName("pushButtonDeleteJob") self.pushButtonDeleteJob.clicked.connect(self.delete_bol) self.spinBoxShipper = QtWidgets.QComboBox(self.groupBox) self.spinBoxShipper.setGeometry(QtCore.QRect(120, 10, 181, 22)) self.spinBoxShipper.setObjectName("spinBoxShipper") self.shipername_list = self.database.get_shippernames() self.spinBoxShipper.setStyleSheet( "background-color: rgb(255, 255, 255); selection-background-color: #4199D8; text-align: left; color: rgb(0, 0, 0);" ) self.spinBoxShipper.addItems(self.shipername_list) self.dateEdit = QtWidgets.QDateEdit(self.groupBox) self.dateEdit.setGeometry(QtCore.QRect(120, 70, 110, 22)) self.dateEdit.setObjectName("dateEdit") self.dateEdit.setDateTime(QtCore.QDateTime.currentDateTime()) self.label_7 = QtWidgets.QLabel(self.groupBox) self.label_7.setGeometry(QtCore.QRect(20, 70, 71, 21)) self.label_7.setObjectName("label_7") self.label_8 = QtWidgets.QLabel(self.groupBox) self.label_8.setGeometry(QtCore.QRect(20, 100, 71, 21)) self.label_8.setObjectName("label_8") self.timeEditStartTime = QtWidgets.QTimeEdit(self.groupBox) self.timeEditStartTime.setGeometry(QtCore.QRect(120, 100, 111, 22)) self.timeEditStartTime.setObjectName("timeEditStartTime") self.timeEditEndTime = QtWidgets.QTimeEdit(self.groupBox) self.timeEditEndTime.setGeometry(QtCore.QRect(120, 130, 111, 22)) self.timeEditEndTime.setObjectName("timeEditEndTime") self.label_9 = QtWidgets.QLabel(self.groupBox) self.label_9.setGeometry(QtCore.QRect(20, 130, 71, 21)) self.label_9.setObjectName("label_9") self.label_10 = QtWidgets.QLabel(self.groupBox) self.label_10.setGeometry(QtCore.QRect(310, 40, 71, 21)) self.label_10.setObjectName("label_10") self.label_11 = QtWidgets.QLabel(self.groupBox) self.label_11.setGeometry(QtCore.QRect(420, 40, 16, 21)) self.label_11.setObjectName("label_11") self.lineEdit = QtWidgets.QLineEdit(self.groupBox) self.lineEdit.setGeometry(QtCore.QRect(430, 40, 111, 21)) self.lineEdit.setObjectName("lineEdit") self.label_12 = QtWidgets.QLabel(self.groupBox) self.label_12.setGeometry(QtCore.QRect(310, 100, 101, 21)) self.label_12.setObjectName("label_12") self.lineEditBillNumber = QtWidgets.QLineEdit(self.groupBox) self.lineEditBillNumber.setGeometry(QtCore.QRect(120, 40, 171, 21)) self.lineEditBillNumber.setObjectName("lineEditBillNumber") self.lineEditLoads = QtWidgets.QLineEdit(self.groupBox) self.lineEditLoads.setGeometry(QtCore.QRect(420, 100, 113, 21)) self.lineEditLoads.setObjectName("lineEditLoads") self.labelError = QtWidgets.QLabel(self.groupBox) self.labelError.setGeometry(QtCore.QRect(180, 190, 421, 21)) self.labelError.setText("") self.labelError.setObjectName("labelError") self.labelError.setStyleSheet('QLabel {color: #990000;}') self.label_6 = QtWidgets.QLabel(self.groupBox) self.label_6.setGeometry(QtCore.QRect(310, 10, 81, 21)) self.label_6.setObjectName("label_6") self.spinBoxUsername = QtWidgets.QComboBox(self.groupBox) self.spinBoxUsername.setGeometry(QtCore.QRect(420, 10, 301, 22)) self.spinBoxUsername.setObjectName("spinBoxUsername") self.username_list = self.database.get_usernames() self.spinBoxUsername.addItems(self.username_list) self.spinBoxUsername.setStyleSheet( "background-color: rgb(255, 255, 255); selection-background-color: #4199D8; text-align: left; color: rgb(0, 0, 0);" ) self.label_13 = QtWidgets.QLabel(self.groupBox) self.label_13.setGeometry(QtCore.QRect(20, 160, 91, 21)) self.label_13.setObjectName("label_13") self.lineEdit_2 = QtWidgets.QLineEdit(self.groupBox) self.lineEdit_2.setGeometry(QtCore.QRect(120, 160, 101, 21)) self.lineEdit_2.setObjectName("lineEdit_2") self.pushButtonClearJob = QtWidgets.QPushButton(self.groupBox) self.pushButtonClearJob.setGeometry(QtCore.QRect(140, 220, 114, 32)) self.pushButtonClearJob.setStyleSheet( "background-color: rgb(122, 122, 122);") self.pushButtonClearJob.setObjectName("pushButtonClearJob") self.pushButtonClearJob.clicked.connect(self.clear_form_BOL) self.label_14 = QtWidgets.QLabel(self.groupBox) self.label_14.setGeometry(QtCore.QRect(310, 70, 71, 21)) self.label_14.setObjectName("label_14") self.spinBoxRate = QtWidgets.QComboBox(self.groupBox) self.spinBoxRate.setGeometry(QtCore.QRect(420, 70, 111, 22)) self.spinBoxRate.setObjectName("spinBoxRate") self.spinBoxRate.setObjectName("spinBoxRate") self.spinBoxRate.setStyleSheet( "background-color: rgb(255, 255, 255); selection-background-color: #4199D8; text-align: left; color: rgb(0, 0, 0);" ) self.spinBoxRate.addItem("Per Hour") self.spinBoxRate.addItem("Per Load") self.pushButtonHome = QtWidgets.QPushButton(self.centralwidget) self.pushButtonHome.setGeometry(QtCore.QRect(720, 20, 50, 50)) self.pushButtonHome.setIcon( QtGui.QIcon( "/Users/aarav/Documents/Github/truckerTracker/Dashboard/venv/imgs/144x144.png" )) self.pushButtonHome.setStyleSheet("border-radius: 3px;") self.pushButtonHome.setIconSize(QtCore.QSize(45, 45)) self.pushButtonHome.setText("") self.pushButtonHome.setObjectName("pushButtonHome") self.tableWidgetBills = QtWidgets.QTableWidget(self.centralwidget) self.tableWidgetBills.setGeometry(QtCore.QRect(20, 70, 771, 251)) self.tableWidgetBills.setObjectName("tableWidgetBills") self.tableWidgetBills.setColumnCount(13) self.tableWidgetBills.setSelectionBehavior( QtWidgets.QTableWidget.SelectRows) self.tableWidgetBills.itemSelectionChanged.connect( self.change_data_BOL) column_titles = [ 'id', 'date', 'bill_number', 'shipper_name', 'username', 'rate', 'rate_type', 'origin', 'destination', 'loads', 'start_time', 'end_time', 'hours_worked' ] counter = 0 for title in column_titles: item = QtWidgets.QTableWidgetItem(title) item.setBackground(QtGui.QColor(211, 211, 211)) self.tableWidgetBills.setHorizontalHeaderItem(counter, item) counter += 1 self.update_bol_table() header = self.tableWidgetBills.resizeColumnToContents(0) Bill_of_Lading.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(Bill_of_Lading) self.menubar.setGeometry(QtCore.QRect(0, 0, 809, 22)) self.menubar.setObjectName("menubar") Bill_of_Lading.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(Bill_of_Lading) self.statusbar.setObjectName("statusbar") Bill_of_Lading.setStatusBar(self.statusbar) self.retranslateUiBOL(Bill_of_Lading) QtCore.QMetaObject.connectSlotsByName(Bill_of_Lading) def update_bol_table(self): for i in reversed(range(self.tableWidgetBills.rowCount())): self.tableWidgetBills.removeRow(i) bills_list = self.database.get_bols() for row_number in range(len(bills_list)): self.tableWidgetBills.insertRow(row_number) bill = bills_list[row_number] self.tableWidgetBills.setItem( row_number, 0, QtWidgets.QTableWidgetItem(str(bill.bill_id))) self.tableWidgetBills.setItem( row_number, 1, QtWidgets.QTableWidgetItem(str(bill.date))) self.tableWidgetBills.setItem( row_number, 2, QtWidgets.QTableWidgetItem(str(bill.bill_number))) self.tableWidgetBills.setItem( row_number, 3, QtWidgets.QTableWidgetItem(str(bill.shipper_name))) self.tableWidgetBills.setItem( row_number, 4, QtWidgets.QTableWidgetItem(str(bill.user_name))) self.tableWidgetBills.setItem( row_number, 5, QtWidgets.QTableWidgetItem(str(bill.rate))) self.tableWidgetBills.setItem( row_number, 6, QtWidgets.QTableWidgetItem(str(bill.rate_type))) self.tableWidgetBills.setItem( row_number, 7, QtWidgets.QTableWidgetItem(str(bill.origin))) self.tableWidgetBills.setItem( row_number, 8, QtWidgets.QTableWidgetItem(str(bill.destination))) self.tableWidgetBills.setItem( row_number, 9, QtWidgets.QTableWidgetItem(str(bill.loads))) self.tableWidgetBills.setItem( row_number, 10, QtWidgets.QTableWidgetItem(str(bill.start_time))) self.tableWidgetBills.setItem( row_number, 11, QtWidgets.QTableWidgetItem(str(bill.end_time))) self.tableWidgetBills.setItem( row_number, 12, QtWidgets.QTableWidgetItem(str(bill.hours_worked))) return def change_data_BOL(self): item = self.tableWidgetBills.selectedItems() if len(item) == 0: return else: temp = (str(item[1].text())).split('-') self.dateEdit.setDate( QtCore.QDate(int(temp[0]), int(temp[1]), int(temp[2]))) self.lineEditBillNumber.setText(str(item[2].text())) index = self.spinBoxShipper.findText(str(item[3].text()), QtCore.Qt.MatchFixedString) if index >= 0: self.spinBoxShipper.setCurrentIndex(index) index = self.spinBoxUsername.findText(str(item[4].text()), QtCore.Qt.MatchFixedString) if index >= 0: self.spinBoxUsername.setCurrentIndex(index) self.lineEdit.setText(str(item[5].text())) index = self.spinBoxRate.findText(str(item[6].text()), QtCore.Qt.MatchFixedString) if index >= 0: self.spinBoxRate.setCurrentIndex(index) self.textEditOriginAddress.setText(str(item[7].text())) self.textEditDestinationAddress.setText(str(item[8].text())) self.lineEditLoads.setText(str(item[9].text())) time = str(item[10].text()).split(':') self.timeEditStartTime.setTime( QtCore.QTime(float(time[0]), float(time[1]))) time = str(item[11].text()).split(':') self.timeEditEndTime.setTime( QtCore.QTime(float(time[0]), float(time[1]))) self.lineEdit_2.setText(str(item[12].text())) return def edit_bol(self): item = self.tableWidgetBills.selectedItems() if len(item) == 0: self.labelError.setText("ERROR PLEASE SELECT JOB TO EDIT!") else: confirm = self.showdialog() if confirm: temp = self.dateEdit.date() date = temp.toPyDate() temp_2 = self.timeEditStartTime.time() start_time = temp_2.toPyTime() temp_3 = self.timeEditEndTime.time() end_time = temp_3.toPyTime() shipper_name = self.spinBoxShipper.currentText() username = self.spinBoxUsername.currentText() rate_type = self.spinBoxRate.currentText() rate = self.lineEdit.text() hours_worked = self.lineEdit_2.text() loads = self.lineEditLoads.text() origin = self.textEditOriginAddress.toPlainText() destination = self.textEditDestinationAddress.toPlainText() bill_number = self.lineEditBillNumber.text() bill_id = item[0].text() self.database.edit_bol(bill_id, date, bill_number, shipper_name, username, rate, rate_type, origin, destination, loads, start_time, end_time, hours_worked) self.update_bol_table() self.clear_form_BOL() def clear_form_BOL(self): self.tableWidgetBills.clearSelection() self.dateEdit.setDateTime(QtCore.QDateTime.currentDateTime()) self.lineEditBillNumber.setText("") self.lineEdit.setText("") self.textEditOriginAddress.setText("") self.textEditDestinationAddress.setText("") self.lineEditLoads.setText("") self.timeEditStartTime.setTime(QtCore.QTime.currentTime()) self.timeEditEndTime.setTime(QtCore.QTime.currentTime()) self.lineEdit_2.setText("") self.labelError.setText("") def showdialog(self): msg = QMessageBox() msg.setIcon(QMessageBox.Warning) msg.setText("Make Changes?") msg.setInformativeText("The action CANNOT be undone!") msg.setWindowTitle("Confirmation") msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No) retval = msg.exec_() if retval == QMessageBox.Yes: return True else: return False def add_bol(self): temp = self.dateEdit.date() date = temp.toPyDate() temp_2 = self.timeEditStartTime.time() start_time = temp_2.toPyTime() temp_3 = self.timeEditEndTime.time() end_time = temp_3.toPyTime() shipper_name = self.spinBoxShipper.currentText() username = self.spinBoxUsername.currentText() rate_type = self.spinBoxRate.currentText() rate = self.lineEdit.text() hours_worked = self.lineEdit_2.text() loads = self.lineEditLoads.text() origin = self.textEditOriginAddress.toPlainText() destination = self.textEditDestinationAddress.toPlainText() bill_number = self.lineEditBillNumber.text() self.database.add_bol(date, bill_number, shipper_name, username, rate, rate_type, origin, destination, loads, start_time, end_time, hours_worked) self.update_bol_table() self.clear_form_BOL() def delete_bol(self): item = self.tableWidgetBills.selectedItems() if len(item) == 0: self.labelError.setText("ERROR PLEASE SELECT JOB TO EDIT!") else: confirm = self.showdialog() if confirm: bill_id = item[0].text() self.database.delete_bol(bill_id) self.update_bol_table() self.clear_form_BOL() return def retranslateUiBOL(self, Bill_of_Lading): _translate = QtCore.QCoreApplication.translate Bill_of_Lading.setWindowTitle( _translate("Bill_of_Lading", "MainWindow")) self.label.setText(_translate("Bill_of_Lading", "BILL OF LADINGS")) self.label_2.setText(_translate("Bill_of_Lading", "Shipper Name:")) self.label_3.setText(_translate("Bill_of_Lading", "Bill Number:")) self.label_4.setText(_translate("Bill_of_Lading", "Origin:")) self.label_5.setText(_translate("Bill_of_Lading", "Destination:")) self.pushButtonAddJob.setText(_translate("Bill_of_Lading", "Add BOL")) self.pushButtonEditJob.setText(_translate("Bill_of_Lading", "Edit BOL")) self.pushButtonDeleteJob.setText( _translate("Bill_of_Lading", "Delete BOL")) self.label_7.setText(_translate("Bill_of_Lading", "Date:")) self.label_8.setText(_translate("Bill_of_Lading", "Start Time:")) self.label_9.setText(_translate("Bill_of_Lading", "End Time:")) self.label_10.setText(_translate("Bill_of_Lading", "Rate:")) self.label_11.setText(_translate("Bill_of_Lading", "$")) self.label_12.setText(_translate("Bill_of_Lading", "Loads:")) self.label_6.setText(_translate("Bill_of_Lading", " Username:"******"Bill_of_Lading", "Hours Worked:")) self.pushButtonClearJob.setText( _translate("Bill_of_Lading", "Clear BOL")) self.label_14.setText(_translate("Bill_of_Lading", "Rate Type:"))
class Ui_AddJob(object): database = Database() def setupUiAddJob(self, AddJob): AddJob.setObjectName("AddJob") AddJob.resize(809, 633) AddJob.setStyleSheet("background-color: rgb(255, 255, 255);") self.centralwidget = QtWidgets.QWidget(AddJob) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(280, 10, 261, 51)) font = QtGui.QFont() font.setPointSize(35) font.setBold(False) font.setWeight(50) self.label.setFont(font) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.label.setStyleSheet('QLabel {color: #124E78;}') self.listWidgetJobs = QtWidgets.QListWidget(self.centralwidget) self.listWidgetJobs.setGeometry(QtCore.QRect(40, 80, 261, 451)) self.listWidgetJobs.setEditTriggers( QtWidgets.QAbstractItemView.DoubleClicked | QtWidgets.QAbstractItemView.EditKeyPressed | QtWidgets.QAbstractItemView.SelectedClicked) self.listWidgetJobs.setObjectName("listWidgetJobs") self.listWidgetJobs.itemSelectionChanged.connect(self.change_data) self.update_jobs_list() self.selected_job = None self.groupBox = QtWidgets.QGroupBox(self.centralwidget) self.groupBox.setGeometry(QtCore.QRect(310, 90, 451, 441)) self.groupBox.setTitle("") self.groupBox.setObjectName("groupBox") self.label_2 = QtWidgets.QLabel(self.groupBox) self.label_2.setGeometry(QtCore.QRect(10, 10, 101, 21)) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(self.groupBox) self.label_3.setGeometry(QtCore.QRect(10, 40, 81, 21)) self.label_3.setObjectName("label_3") self.label_4 = QtWidgets.QLabel(self.groupBox) self.label_4.setGeometry(QtCore.QRect(10, 160, 111, 16)) self.label_4.setObjectName("label_4") self.textEditOriginAddress = QtWidgets.QTextEdit(self.groupBox) self.textEditOriginAddress.setGeometry(QtCore.QRect(10, 180, 441, 41)) self.textEditOriginAddress.setObjectName("textEditOriginAddress") self.label_5 = QtWidgets.QLabel(self.groupBox) self.label_5.setGeometry(QtCore.QRect(10, 220, 141, 16)) self.label_5.setObjectName("label_5") self.textEditDestinationAddress = QtWidgets.QTextEdit(self.groupBox) self.textEditDestinationAddress.setGeometry(QtCore.QRect(10, 240, 441, 41)) self.textEditDestinationAddress.setObjectName("textEditDestinationAddress") self.label_6 = QtWidgets.QLabel(self.groupBox) self.label_6.setGeometry(QtCore.QRect(10, 280, 141, 16)) self.label_6.setObjectName("label_6") self.textEditComments = QtWidgets.QTextEdit(self.groupBox) self.textEditComments.setGeometry(QtCore.QRect(10, 300, 441, 91)) self.textEditComments.setObjectName("textEditComments") self.pushButtonAddJob = QtWidgets.QPushButton(self.groupBox) self.pushButtonAddJob.setGeometry(QtCore.QRect(330, 400, 114, 32)) self.pushButtonAddJob.setStyleSheet("background-color: rgb(40, 195, 50);") self.pushButtonAddJob.setObjectName("pushButtonAddJob") self.pushButtonAddJob.clicked.connect(self.add_job) self.pushButtonEditJob = QtWidgets.QPushButton(self.groupBox) self.pushButtonEditJob.setGeometry(QtCore.QRect(210, 400, 114, 32)) self.pushButtonEditJob.setStyleSheet("background-color: rgb(255, 193, 44);") self.pushButtonEditJob.setObjectName("pushButtonEditJob") self.pushButtonEditJob.clicked.connect(self.edit_job) self.pushButtonDeleteJob = QtWidgets.QPushButton(self.groupBox) self.pushButtonDeleteJob.setGeometry(QtCore.QRect(90, 400, 114, 32)) self.pushButtonDeleteJob.setStyleSheet("background-color: rgb(253, 70, 70);") self.pushButtonDeleteJob.clicked.connect(self.delete_job) self.pushButtonDeleteJob.setObjectName("pushButtonDeleteJob") self.spinBoxShipper = QtWidgets.QComboBox(self.groupBox) self.spinBoxShipper.setGeometry(QtCore.QRect(110, 10, 341, 22)) self.spinBoxShipper.setObjectName("spinBoxShipper") self.shipername_list = self.database.get_shippernames() self.spinBoxShipper.setStyleSheet("background-color: rgb(255, 255, 255); selection-background-color: #4199D8; text-align: left; color: rgb(0, 0, 0);") self.spinBoxShipper.addItems(self.shipername_list) self.dateEdit = QtWidgets.QDateEdit(self.groupBox) self.dateEdit.setGeometry(QtCore.QRect(110, 70, 110, 22)) self.dateEdit.setObjectName("dateEdit") self.dateEdit.setDateTime(QtCore.QDateTime.currentDateTime()) self.label_7 = QtWidgets.QLabel(self.groupBox) self.label_7.setGeometry(QtCore.QRect(10, 70, 71, 21)) self.label_7.setObjectName("label_7") self.label_8 = QtWidgets.QLabel(self.groupBox) self.label_8.setGeometry(QtCore.QRect(10, 100, 71, 21)) self.label_8.setObjectName("label_8") self.timeEditStartTime = QtWidgets.QTimeEdit(self.groupBox) self.timeEditStartTime.setGeometry(QtCore.QRect(110, 100, 111, 22)) self.timeEditStartTime.setObjectName("timeEditStartTime") self.label_10 = QtWidgets.QLabel(self.groupBox) self.label_10.setGeometry(QtCore.QRect(10, 130, 71, 21)) self.label_10.setObjectName("label_10") self.label_11 = QtWidgets.QLabel(self.groupBox) self.label_11.setGeometry(QtCore.QRect(100, 130, 16, 21)) self.label_11.setObjectName("label_11") self.lineEditRate = QtWidgets.QLineEdit(self.groupBox) self.lineEditRate.setGeometry(QtCore.QRect(110, 130, 91, 21)) self.lineEditRate.setObjectName("lineEdit") self.spinBoxUsername = QtWidgets.QComboBox(self.groupBox) self.spinBoxUsername.setGeometry(QtCore.QRect(110, 40, 341, 22)) self.spinBoxUsername.setObjectName("spinBoxUsername") self.username_list = self.database.get_usernames() self.spinBoxUsername.addItems(self.username_list) self.spinBoxUsername.setStyleSheet("background-color: rgb(255, 255, 255); selection-background-color: #4199D8; text-align: left; color: rgb(0, 0, 0);") self.spinBoxRate = QtWidgets.QComboBox(self.groupBox) self.spinBoxRate.setGeometry(QtCore.QRect(210, 130, 101, 22)) self.spinBoxRate.setObjectName("spinBoxRate") self.spinBoxRate.setStyleSheet("background-color: rgb(255, 255, 255); selection-background-color: #4199D8; text-align: left; color: rgb(0, 0, 0);") self.spinBoxRate.addItem("Per Hour") self.spinBoxRate.addItem("Per Load") self.labelError = QtWidgets.QLabel(self.centralwidget) self.labelError.setGeometry(QtCore.QRect(340, 520, 421, 21)) self.labelError.setText("") self.labelError.setObjectName("labelError") self.labelError.setStyleSheet('QLabel {color: #990000;}') self.pushButtonHome = QtWidgets.QPushButton(self.centralwidget) self.pushButtonHome.setGeometry(QtCore.QRect(720, 20, 50, 50)) self.pushButtonHome.setIcon( QtGui.QIcon("/Users/aarav/Documents/Github/truckerTracker/Dashboard/venv/imgs/144x144.png")) self.pushButtonHome.setStyleSheet("border-radius: 3px;") self.pushButtonHome.setIconSize(QtCore.QSize(45, 45)) self.pushButtonHome.setText("") self.pushButtonHome.setObjectName("pushButtonHome") AddJob.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(AddJob) self.menubar.setGeometry(QtCore.QRect(0, 0, 809, 22)) self.menubar.setObjectName("menubar") AddJob.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(AddJob) self.statusbar.setObjectName("statusbar") AddJob.setStatusBar(self.statusbar) self.retranslateUiAddJob(AddJob) QtCore.QMetaObject.connectSlotsByName(AddJob) def retranslateUiAddJob(self, AddJob): _translate = QtCore.QCoreApplication.translate AddJob.setWindowTitle(_translate("AddJob", "MainWindow")) self.label.setText(_translate("AddJob", "ADD JOB")) self.label_2.setText(_translate("AddJob", "Shipper Name:")) self.label_3.setText(_translate("AddJob", "Username:"******"AddJob", "Origin Address:")) self.label_5.setText(_translate("AddJob", "Destination Address:")) self.label_6.setText(_translate("AddJob", "Comments:")) self.pushButtonAddJob.setText(_translate("AddJob", "Add Job")) self.pushButtonEditJob.setText(_translate("AddJob", "Edit Job")) self.pushButtonDeleteJob.setText(_translate("AddJob", "Delete Job")) self.label_7.setText(_translate("AddJob", "Date:")) self.label_8.setText(_translate("AddJob", "Start Time:")) self.label_10.setText(_translate("AddJob", "Rate:")) self.label_11.setText(_translate("AddJob", "$")) def update_jobs_list(self): self.listWidgetJobs.clear() jobs_list = self.database.get_current_jobs() for job in jobs_list: job_description = "{} - {} on {} at {}".format(job.job_id, job.username, job.start_date, job.shipper_name) self.listWidgetJobs.addItem(job_description) def change_data(self): item = self.listWidgetJobs.selectedItems() if len(item) == 0: return else: list = item[0].text().split() index = self.spinBoxShipper.findText(list[6], QtCore.Qt.MatchFixedString) if index >= 0: self.spinBoxShipper.setCurrentIndex(index) index = self.spinBoxUsername.findText(list[2], QtCore.Qt.MatchFixedString) if index >= 0: self.spinBoxUsername.setCurrentIndex(index) self.selected_job = self.database.get_current_job_by_id(list[0]) self.lineEditRate.setText(str(self.selected_job.rate)) self.textEditOriginAddress.setText(self.selected_job.origin) self.textEditDestinationAddress.setText(self.selected_job.destination) self.textEditComments.setText(self.selected_job.comments) self.dateEdit.setDate(QtCore.QDate(self.selected_job.start_date)) time = str(self.selected_job.start_time).split(':') self.timeEditStartTime.setTime(QtCore.QTime(float(time[0]), float(time[1]))) index = self.spinBoxRate.findText(self.selected_job.pay_type, QtCore.Qt.MatchFixedString) if index >= 0: self.spinBoxRate.setCurrentIndex(index) def clear_form(self): self.lineEditRate.setText("") self.textEditOriginAddress.setText("") self.textEditDestinationAddress.setText("") self.textEditComments.setText("") self.dateEdit.setDateTime(QtCore.QDateTime.currentDateTime()) self.listWidgetJobs.clearSelection() self.labelError.setText("") def add_job(self): temp = self.dateEdit.date() date = temp.toPyDate() temp_2 = self.timeEditStartTime.time() time = temp_2.toPyTime() shipper_name = self.spinBoxShipper.currentText() username = self.spinBoxUsername.currentText() rate = self.lineEditRate.text() rate_type = self.spinBoxRate.currentText() origin = self.textEditOriginAddress.toPlainText() destination = self.textEditDestinationAddress.toPlainText() comments = self.textEditComments.toPlainText() self.database.add_job(shipper_name, username, date, time, rate_type, rate, origin, destination, comments) self.update_jobs_list() self.clear_form() def delete_job(self): item = self.listWidgetJobs.selectedItems() if len(item) == 0: self.labelError.setText("ERROR PLEASE SELECT JOB TO DELETE!") else: confirm = self.showdialog() if confirm: self.database.delete_job(self.selected_job.job_id) self.clear_form() self.update_jobs_list() return else: return def edit_job(self): item = self.listWidgetJobs.selectedItems() if len(item) == 0: self.labelError.setText("ERROR PLEASE SELECT JOB TO EDIT!") else: confirm = self.showdialog() if confirm: temp = self.dateEdit.date() date = temp.toPyDate() temp_2 = self.timeEditStartTime.time() time = temp_2.toPyTime() shipper_name = self.spinBoxShipper.currentText() username = self.spinBoxUsername.currentText() rate = self.lineEditRate.text() rate_type = self.spinBoxRate.currentText() origin = self.textEditOriginAddress.toPlainText() destination = self.textEditDestinationAddress.toPlainText() comments = self.textEditComments.toPlainText() self.database.edit_job(shipper_name, username, date, time, rate_type, rate, origin, destination, comments, self.selected_job.job_id) self.update_jobs_list() self.clear_form() return else: return def showdialog(self): msg = QMessageBox() msg.setIcon(QMessageBox.Warning) msg.setText("Make Changes?") msg.setInformativeText("The action CANNOT be undone!") msg.setWindowTitle("Confirmation") msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No) retval = msg.exec_() if retval == QMessageBox.Yes: return True else: return False