def __init__(self, window=None, table=None, window_model=None): self.window = window self.table = table self.window_model = window_model self.ui = Ui_AddDialog() self.ui.setupUi(window) self.table_model = TableModel(window_model) self.table_model.setHeaders( ColumnNames('Add').get_column_headers(table, ['*'])) # self.table_model.headers = ColumnNames().pracownicy_display if table == 'Pracownicy': self.table_model.headers.insert( len(ColumnNames().pracownicy_db) - 1, 'Hasło') self.table_model.rows = [''] * len(self.table_model.headers) self.table_model.edit_enabled = True self.table_model.header_orientation = PyQt5.QtCore.Qt.Vertical self.ui.tableView.horizontalHeader().setVisible(False) if table == 'Akwaria': self.ui.tableView.verticalHeader().setSectionResizeMode( QHeaderView.ResizeToContents) self.ui.tableView.setModel(self.table_model) self.ui.buttonBox.accepted.connect(self.submit) # self.ui.buttonBox.rejected.connect(self.reject) self.window.exec()
def edit_value(self, column_name, to_edit_id, new_value): query = Queries.query_edit_value.format(table=self.current_table, column_name=ColumnNames().get_db_column_name(self.current_table, column_name), new_value=new_value, id_name=ColumnNames().get_id_name(self.current_table), id=to_edit_id ) self.db_connection.query_delete(query) self.db_connection.commit()
def table_selection_change(self, i): self.current_table = self.main_model.tables[i] self.main_model.current_table = self.main_model.tables[i] self.table_model.rows = [] self.create_list(self.current_table, ['*'], ColumnNames().get_id_name(self.current_table)) self.refresh_sort_selection() self.refresh_table()
def get_table_content(self, table=None, columns=None, order_param=None): query = Queries.query_get_list.format(table=table, cols=columns, param=order_param) query = query.translate({ord(i): None for i in "[]'"}) response = self.db_connection.send_request(query=query) print(response) self.table_model.rows = response col_names = ColumnNames().get_column_headers(table, columns) self.table_model.headers = col_names self.current_table = table
def create_list(self, table, cols, order_param): query = Queries.query_get_list.format(table=table, cols=cols, param=order_param) query = query.translate({ord(i): None for i in "[]'"}) response = self.db_connection.send_request(query=query) print(response) col_names = ColumnNames().get_column_headers(table, cols) self.table_model.setHeaders(col_names) self.table_model.rows = response self.refresh_table()
def delete(self): print("DELETE") if self.current_id > 0: query = Queries.query_delete_row.format( table=self.current_table, id_name=ColumnNames().get_id_name(self.current_table), id=self.current_id) if self.db_connection.query_delete(query=query): self.table_model.deleteData(self.current_row) self.db_connection.commit() self.refresh_table()
def add(self): dialog = QtWidgets.QDialog() d = DialogAddController(dialog, self.current_table, self.main_model) self.create_list(self.current_table, ['*'], ColumnNames().get_id_name(self.current_table))
def sort_selection_change(self, i): self.create_list( self.current_table, ['*'], ColumnNames().get_db_column_name(self.current_table, self.table_model.headers[i]))
def check_data_types(self, table, rows): correct_types = ColumnNames().get_data_types(table) optionals = ColumnNames().get_optionals(table) for data in rows: if data == '' or data is None: if not optionals[rows.index(data)]: return False else : continue if correct_types[rows.index(data)] == 'int': if not (type(data) == int or self.is_int(data) or (type(data) == float and data-int(data)==0.00)): return False else: continue if correct_types[rows.index(data)] == 'varchar20': if len(data) > 20: return False else: continue if correct_types[rows.index(data)] == 'varchar30': if len(data) > 30: return False else: continue if correct_types[rows.index(data)] == 'varchar40': if len(data) > 40: return False else: continue if correct_types[rows.index(data)] == 'varchar4': if len(data) > 4: return False else: continue if correct_types[rows.index(data)] == 'varchar5': if len(data) > 5: return False else: continue if correct_types[rows.index(data)] == 'varchar400': if len(data) > 400: return False else: continue if correct_types[rows.index(data)] == 'char11': if len(data) != 11: return False else: continue if correct_types[rows.index(data)] == 'char6': if len(data) != 6: return False else: continue if correct_types[rows.index(data)] == 'char64': if len(data) != 64: return False else: continue if correct_types[rows.index(data)] == 'char1': if len(data) != 1 or not (data == 'M' or data == 'K'): return False else: continue if correct_types[rows.index(data)] == 'float': if not (self.is_int(data) or self.is_float(data) or type(data) == float): return False else: continue return True
def delete_row(self, to_delete_id, row_index): query = Queries.query_delete_row.format(table=self.current_table, id_name=ColumnNames().pracownicy_db[0], id=to_delete_id) self.db_connection.query_delete(query=query) self.db_connection.commit() self.table_model.deleteData(self.row_index)
def submit(self): values = '' additional_values = '' table_index = self.window_model.tables.index(self.table) check = self.window_model.check_data_types( self.table, self.table_model.rows[0:len(ColumnNames( ).get_column_headers(self.table, ['*']))]) if table_index == 0 or table_index == 2: additional_id = ColumnNames( ).additional_display_strings[table_index][0] additional_id_index = self.table_model.headers.index(additional_id) to_check_values = self.table_model.rows[0:len(ColumnNames( ).get_column_headers(self.table, ['*'])) - 1] to_check_values.insert(additional_id_index, self.table_model.rows[additional_id_index]) check = self.window_model.check_data_types(self.table, to_check_values) additional_check = self.window_model.check_data_types( ColumnNames().additional_tables[ColumnNames().tables.index( self.table)], self.table_model. rows[additional_id_index:len(self.table_model.rows) - 1]) if not (check): print('Check: ' + str(check)) message_box = QtWidgets.QMessageBox() message_box.setWindowTitle('Błąd') message_box.setText("Wprowadzono błędne dane.") message_box.exec() return current_index = -1 for v in self.table_model.rows: current_index = current_index + 1 if current_index < additional_id_index: if current_index == ColumnNames().get_column_headers( self.table, ['*']).index(additional_id): values = values + '\'' + self.table_model.rows[ additional_id_index] + '\', ' if v == ' ': return False if v.isnumeric() and len(v) < 10: values = values + str(v) + ', ' else: values = values + '\'' + v + '\', ' else: if current_index == ColumnNames().get_column_headers( self.table, ['*']).index(additional_id): values = values + '\'' + self.table_model.rows[ additional_id_index] + '\', ' if current_index == additional_id_index: print('Nastepny:' + self.table_model.rows[current_index + 1]) if self.window_model.additional_exists( ColumnNames().additional_tables[table_index], int(v), ColumnNames().additional_table_id_name(table_index)) and \ (self.table_model.rows[current_index + 1] == '' or self.table_model.rows[current_index + 1] is None): self.window_model.add_row( self.table, values[0:len(values) - 2]) return else: if not additional_check: print('Additional check: ' + str(check)) message_box = QtWidgets.QMessageBox() message_box.setWindowTitle('Błąd') message_box.setText("Wprowadzono błędne dane.") message_box.exec() return if v == ' ': return False if v.isnumeric() and len(v) < 10: additional_values = additional_values + str(v) + ', ' else: additional_values = additional_values + '\'' + v + '\', ' self.window_model.add_row( ColumnNames().additional_tables[table_index], additional_values[0:len(additional_values) - 2]) self.window_model.add_row(self.table, values[0:len(values) - 2]) else: check = self.window_model.check_data_types( self.table, self.table_model.rows[0:len(ColumnNames( ).get_column_headers(self.table, ['*']))]) if not check: print('Check: ' + str(check)) message_box = QtWidgets.QMessageBox() message_box.setWindowTitle('Błąd') message_box.setText("Wprowadzono błędne dane.") message_box.exec() return for v in self.table_model.rows: if type(v) is str: if v == ' ': return False if v.isnumeric() and len(v) < 10: values = values + str(v) + ', ' else: values = values + '\'' + v + '\', ' else: values = values + str(v) self.window_model.add_row(self.table, values[0:len(values) - 2])