def __on_wizard_finished(self, data, wizard_widget): """ This slot execute when wizard to create a database is finished """ pireal = Pireal.get_service("pireal") if not data: # If it's canceled, remove wizard widget and return to Start Page self.remove_last_widget() else: # Create a new data base container db_container = database_container.DatabaseContainer() # Associate the file name with the PFile object pfile_object = pfile.File(data['filename']) # Associate PFile object with data base container # and add widget to stacked db_container.pfile = pfile_object self.add_widget(db_container) # Remove wizard self.stacked.removeWidget(wizard_widget) # Set window title pireal.change_title(file_manager.get_basename(data['filename'])) # Enable db actions pireal.set_enabled_db_actions(True) pireal.set_enabled_relation_actions(True) self.created = True DEBUG("Base de datos creada correctamente: '{}'".format( data['filename'])) # If data or not, show menubar and toolbar again pireal.show_hide_menubar() pireal.show_hide_toolbar()
def __on_wizard_finished(self, *data): """This slot execute when wizard to create a database is finished""" pireal = Pireal.get_service("pireal") if data: db_name, location, fname = data # Create a new data base container db_container = database_container.DatabaseContainer() # Associate the file name with the PFile object pfile_object = pfile.File(fname) # Associate PFile object with data base container # and add widget to stacked db_container.pfile = pfile_object self.add_widget(db_container) # Set window title pireal.change_title(file_manager.get_basename(fname)) # Enable db actions pireal.set_enabled_db_actions(True) pireal.set_enabled_relation_actions(True) self.created = True logger.debug("La base de datos ha sido creada con éxito")
def load_relation(self, filenames): for filename in filenames: with open(filename) as f: csv_reader = csv.reader(f) header = next(csv_reader) rel = relation.Relation() rel.header = header for i in csv_reader: rel.insert(i) relation_name = file_manager.get_basename(filename) if not self.table_widget.add_relation(relation_name, rel): QMessageBox.information( self, self.tr("Información"), self.tr("Ya existe una relación " "con el nombre " "'{}'".format(relation_name))) return False self.table_widget.add_table(rel, relation_name) # self.lateral_widget.add_item(relation_name, rel.cardinality()) return True
def load_relation(self, filenames): for filename in filenames: with open(filename) as f: csv_reader = csv.reader(f) header = next(csv_reader) rel = relation.Relation() rel.header = header for i in csv_reader: rel.insert(i) relation_name = file_manager.get_basename(filename) if not self.table_widget.add_relation(relation_name, rel): QMessageBox.information(self, self.tr("Information"), self.tr("There is already a " "relationship with name " "'{}'".format( relation_name))) return False self.table_widget.add_table(rel, relation_name) self.lateral_widget.add_item(relation_name, rel.count()) return True
def load_relation(self, filenames): lateral = Pireal.get_service("lateral") for filename in filenames: rel = relation.Relation(filename) rel_name = file_manager.get_basename(filename) self.relations[rel_name] = rel table = Table() table.setRowCount(1) table.setColumnCount(0) for _tuple in rel.content: row = table.rowCount() table.setColumnCount(len(rel.fields)) for column, text in enumerate(_tuple): item = Item() item.setText(text) table.setItem(row - 1, column, item) table.insertRow(row) table.removeRow(table.rowCount() - 1) table.setHorizontalHeaderLabels(rel.fields) self.stacked.addWidget(table) lateral.add_item_list([rel_name])
def test_get_basename(filename, name): assert file_manager.get_basename(filename) == name
def open_database(self, filename='', remember=True): """ This function opens a database and set this on the UI """ if self.created: return self.__say_about_one_db_at_time() # If not filename provide, then open dialog to select if not filename: if self.__last_open_folder is None: directory = os.path.expanduser("~") else: directory = self.__last_open_folder filter_ = settings.SUPPORTED_FILES.split(';;')[0] filename, _ = QFileDialog.getOpenFileName( self, self.tr("Abrir Base de " "Datos"), directory, filter_) # If is canceled, return if not filename: return # If filename provide try: logger.debug("Intentando abrir el archivo {}".format(filename)) # Read pdb file pfile_object = pfile.File(filename) db_data = pfile_object.read() # Create a dict to manipulate data more easy db_data = self.__sanitize_data(db_data) except Exception as reason: QMessageBox.information(self, self.tr("El archivo no se puede abrir"), reason.__str__()) logger.debug("Error al abrir el archivo {0}: '{1}'".format( filename, reason.__str__())) return # Create a database container widget db_container = database_container.DatabaseContainer() try: db_container.create_database(db_data) except Exception as reason: QMessageBox.information(self, self.tr("Error"), str(reason)) logger.debug("Error al crear la base de datos: {}".format( reason.__str__())) return # Set the PFile object to the new database db_container.pfile = pfile_object # Add data base container to stacked self.add_widget(db_container) # Database name db_name = file_manager.get_basename(filename) # Update title with the new database name, and enable some actions pireal = Pireal.get_service("pireal") self.databaseConected.emit(self.tr("Conectado a: {}".format(db_name))) pireal.set_enabled_db_actions(True) pireal.set_enabled_relation_actions(True) if remember: # Add to recent databases self.recent_databases = filename # Remember the folder self.__last_open_folder = file_manager.get_path(filename) self.created = True
def open_database(self, filename=''): """ This function opens a database and set this on the UI """ # If not filename provide, then open dialog to select if self.created: QMessageBox.information(self, self.tr("Information"), self.tr("You may only have one database" " open at time.")) DEBUG("Ya existe una base de datos abierta") return if not filename: if self.__last_open_folder is None: directory = os.path.expanduser("~") else: directory = self.__last_open_folder filter_ = settings.SUPPORTED_FILES.split(';;')[0] filename, _ = QFileDialog.getOpenFileName(self, self.tr("Open Database"), directory, filter_) # If is canceled, return if not filename: return # Remember the folder self.__last_open_folder = file_manager.get_path(filename) DEBUG("Abriendo la base de datos: '{}'".format(filename)) # If filename provide try: # Read pdb file pfile_object = pfile.File(filename) db_data = pfile_object.read() # Create a dict to manipulate data more easy db_data = self.__sanitize_data(db_data) except Exception as reason: QMessageBox.information(self, self.tr("The file couldn't be open"), str(reason)) CRITICAL("Error al intentar abrir el archivo: {}".format(reason)) return # Create a database container widget db_container = database_container.DatabaseContainer() try: db_container.create_database(db_data) except Exception as reason: QMessageBox.information(self, self.tr("Error"), str(reason)) CRITICAL("Error al crear la base de datos: {}".format(reason)) return # Set the PFile object to the new database db_container.pfile = pfile_object # Add data base container to stacked self.add_widget(db_container) # Database name db_name = file_manager.get_basename(filename) # Update title with the new database name, and enable some actions pireal = Pireal.get_service("pireal") pireal.change_title(db_name) pireal.set_enabled_db_actions(True) pireal.set_enabled_relation_actions(True) # Add to recent databases self.recent_databases = filename self.created = True