def run(self, edited_command=None): if self.is_skipped_or_done: return True porter = self._get_porter() with OverrideCursor(Qt.WaitCursor): self.progress_bar.setValue(10) self.setDisabled(True) porter.stdout.connect( lambda str: self.print_info.emit(str, LogColor.COLOR_INFO)) porter.stderr.connect(self.on_stderr) porter.process_started.connect(self.on_process_started) porter.process_finished.connect(self.on_process_finished) self.progress_bar.setValue(20) try: if porter.run( edited_command) != iliexecutable.IliExecutable.SUCCESS: self.progress_bar.setValue(0) self.setDisabled(False) return False except JavaNotFoundError as e: self.print_info.emit(e.error_string, LogColor.COLOR_FAIL) self.progress_bar.setValue(0) self.setDisabled(False) return False self.progress_bar.setValue(90) if (self.db_action_type == DbActionType.GENERATE and self.configuration.create_basket_col): self._create_default_dataset() self.progress_bar.setValue(100) self.print_info.emit(f'{self.tr("Done!")}\n', LogColor.COLOR_SUCCESS) self.on_done_or_skipped.emit(self.id) self.is_skipped_or_done = True return True
def accepted(self, edited_command=None): db_id = self.type_combo_box.currentData() res, message = self._lst_panel[db_id].is_valid() if not res: self.txtStdout.setText(message) return configuration = self.updated_configuration() if not edited_command: if (not self.xtf_file_line_edit.validator().validate( configuration.xtffile, 0)[0] == QValidator.Acceptable): self.txtStdout.setText( self. tr("Please set a valid INTERLIS XTF file before exporting data." )) self.xtf_file_line_edit.setFocus() return if not configuration.ilimodels: self.txtStdout.setText( self.tr("Please set a model before exporting data.")) self.export_models_view.setFocus() return # If xtf browser was opened and the file exists, the user already chose # to overwrite the file if (os.path.isfile(self.xtf_file_line_edit.text().strip()) and not self.xtf_browser_was_opened): self.msg = QMessageBox() self.msg.setIcon(QMessageBox.Warning) self.msg.setText( self.tr( "{filename} already exists.\nDo you want to replace it?"). format(filename=os.path.basename( self.xtf_file_line_edit.text().strip()))) self.msg.setWindowTitle(self.tr("Save in XTF Transfer File")) self.msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No) msg_box = self.msg.exec_() if msg_box == QMessageBox.No: return with OverrideCursor(Qt.WaitCursor): self.progress_bar.show() self.progress_bar.setValue(0) self.disable() self.txtStdout.setTextColor(QColor(LogColor.COLOR_INFO)) self.txtStdout.clear() exporter = iliexporter.Exporter() exporter.tool = self.type_combo_box.currentData() exporter.configuration = configuration self.save_configuration(configuration) exporter.stdout.connect(self.print_info) exporter.stderr.connect(self.on_stderr) exporter.process_started.connect(self.on_process_started) exporter.process_finished.connect(self.on_process_finished) self.progress_bar.setValue(25) try: if exporter.run( edited_command) != iliexporter.Exporter.SUCCESS: if configuration.db_ili_version == 3: # failed with a db created by ili2db version 3 if not edited_command: # fallback because of issues with --export3 argument self.show_message( Qgis.Warning, self. tr("Tried export with ili2db version 3.x.x (fallback)" ), ) exporter.version = 3 # ... and enforce the Exporter to use ili2db version 3.x.x if exporter.run() != iliexporter.Exporter.SUCCESS: self.enable() self.progress_bar.hide() return else: self.show_message( Qgis.Warning, self. tr("Tried export with ili2db version 3.x.x (no fallback with editted command)" ), ) return else: self.enable() self.progress_bar.hide() return except JavaNotFoundError as e: self.txtStdout.setTextColor(QColor(LogColor.COLOR_INFO)) self.txtStdout.clear() self.txtStdout.setText(e.error_string) self.enable() self.progress_bar.hide() return self.buttonBox.clear() self.buttonBox.setEnabled(True) self.buttonBox.addButton(QDialogButtonBox.Close) self.progress_bar.setValue(100)
def accepted(self): configuration = self.updated_configuration() ili_mode = self.type_combo_box.currentData() db_id = ili_mode & ~DbIliMode.ili interlis_mode = ili_mode & DbIliMode.ili if interlis_mode: if not self.ili_file_line_edit.text().strip(): if not self.ili_models_line_edit.text().strip(): self.txtStdout.setText( self. tr('Please set a valid INTERLIS model before creating the project.' )) self.ili_models_line_edit.setFocus() return if self.ili_file_line_edit.text().strip() and \ self.ili_file_line_edit.validator().validate(configuration.ilifile, 0)[0] != QValidator.Acceptable: self.txtStdout.setText( self. tr('Please set a valid INTERLIS file before creating the project.' )) self.ili_file_line_edit.setFocus() return res, message = self._lst_panel[db_id].is_valid() if not res: self.txtStdout.setText(message) return configuration.dbschema = configuration.dbschema or configuration.database self.save_configuration(configuration) # create schema with superuser db_factory = self.db_simple_factory.create_factory(db_id) res, message = db_factory.pre_generate_project(configuration) if not res: self.txtStdout.setText(message) return with OverrideCursor(Qt.WaitCursor): self.progress_bar.show() self.progress_bar.setValue(0) self.disable() self.txtStdout.setTextColor(QColor('#000000')) self.txtStdout.clear() if interlis_mode: importer = iliimporter.Importer() importer.tool = self.type_combo_box.currentData() importer.configuration = configuration importer.stdout.connect(self.print_info) importer.stderr.connect(self.on_stderr) importer.process_started.connect(self.on_process_started) importer.process_finished.connect(self.on_process_finished) try: if importer.run() != iliimporter.Importer.SUCCESS: self.enable() self.progress_bar.hide() return except JavaNotFoundError as e: self.txtStdout.setTextColor(QColor('#000000')) self.txtStdout.clear() self.txtStdout.setText(e.error_string) self.enable() self.progress_bar.hide() return try: config_manager = db_factory.get_db_command_config_manager( configuration) uri = config_manager.get_uri() generator = Generator(configuration.tool, uri, configuration.inheritance, configuration.dbschema) self.progress_bar.setValue(50) except DBConnectorError: self.txtStdout.setText( self. tr('There was an error connecting to the database. Check connection parameters.' )) self.enable() self.progress_bar.hide() return if not interlis_mode: if not generator.db_or_schema_exists(): self.txtStdout.setText( self. tr('Source {} does not exist. Check connection parameters.' ).format(db_factory.get_specific_messages() ['db_or_schema'])) self.enable() self.progress_bar.hide() return res, message = db_factory.post_generate_project_validations( configuration) if not res: self.txtStdout.setText(message) self.enable() self.progress_bar.hide() return self.print_info( self.tr('\nObtaining available layers from the database…')) available_layers = generator.layers() if not available_layers: text = self.tr( 'The {} has no layers to load into QGIS.').format( db_factory.get_specific_messages()['layers_source']) self.txtStdout.setText(text) self.enable() self.progress_bar.hide() return self.progress_bar.setValue(70) self.print_info(self.tr('Obtaining relations from the database…')) relations, bags_of_enum = generator.relations(available_layers) self.progress_bar.setValue(75) self.print_info(self.tr('Arranging layers into groups…')) legend = generator.legend(available_layers) self.progress_bar.setValue(85) project = Project() project.layers = available_layers project.relations = relations project.bags_of_enum = bags_of_enum project.legend = legend self.print_info(self.tr('Configuring forms and widgets…')) project.post_generate() self.progress_bar.setValue(90) qgis_project = QgsProject.instance() self.print_info(self.tr('Generating QGIS project…')) project.create(None, qgis_project) # Set the extent of the mapCanvas from the first layer extent found for layer in project.layers: if layer.extent is not None: self.iface.mapCanvas().setExtent(layer.extent) self.iface.mapCanvas().refresh() break self.buttonBox.clear() self.buttonBox.setEnabled(True) self.buttonBox.addButton(QDialogButtonBox.Close) self.progress_bar.setValue(100) self.print_info(self.tr('\nDone!'), '#004905')
def accepted(self, edited_command=None): db_id = self.type_combo_box.currentData() res, message = self._lst_panel[db_id].is_valid() if not res: self.txtStdout.setText(message) return configuration = self.updated_configuration() if not edited_command: if (not self.xtf_file_line_edit.validator().validate( configuration.xtffile, 0)[0] == QValidator.Acceptable): self.txtStdout.setText( self. tr("Please set a valid INTERLIS transfer or catalogue file before importing data." )) self.xtf_file_line_edit.setFocus() return # create schema with superuser db_factory = self.db_simple_factory.create_factory(db_id) res, message = db_factory.pre_generate_project(configuration) if not res: self.txtStdout.setText(message) return with OverrideCursor(Qt.WaitCursor): self.progress_bar.show() self.progress_bar.setValue(0) self.disable() self.txtStdout.setTextColor(QColor(LogColor.COLOR_INFO)) self.txtStdout.clear() dataImporter = iliimporter.Importer(dataImport=True) dataImporter.tool = self.type_combo_box.currentData() dataImporter.configuration = configuration self.save_configuration(configuration) dataImporter.stdout.connect(self.print_info) dataImporter.stderr.connect(self.on_stderr) dataImporter.process_started.connect(self.on_process_started) dataImporter.process_finished.connect(self.on_process_finished) self.progress_bar.setValue(25) try: if dataImporter.run( edited_command) != iliimporter.Importer.SUCCESS: self.enable() self.progress_bar.hide() return except JavaNotFoundError as e: self.txtStdout.setTextColor(QColor(LogColor.COLOR_INFO)) self.txtStdout.clear() self.txtStdout.setText(e.error_string) self.enable() self.progress_bar.hide() return self.buttonBox.clear() self.buttonBox.setEnabled(True) self.buttonBox.addButton(QDialogButtonBox.Close) self.progress_bar.setValue(100) self.refresh_layers()
def accepted(self): configuration = self.updated_configuration() if not self.xtf_file_line_edit.validator().validate( configuration.xtffile, 0)[0] == QValidator.Acceptable: self.txtStdout.setText( self. tr('Please set a valid INTERLIS XTF file before exporting data.' )) self.xtf_file_line_edit.setFocus() return if not configuration.iliexportmodels: self.txtStdout.setText( self.tr('Please set a model before exporting data.')) self.export_models_view.setFocus() return db_id = self.type_combo_box.currentData() res, message = self._lst_panel[db_id].is_valid() if not res: self.txtStdout.setText(message) return # If xtf browser was opened and the file exists, the user already chose # to overwrite the file if os.path.isfile(self.xtf_file_line_edit.text().strip() ) and not self.xtf_browser_was_opened: self.msg = QMessageBox() self.msg.setIcon(QMessageBox.Warning) self.msg.setText( self.tr( "{filename} already exists.\nDo you want to replace it?"). format(filename=os.path.basename( self.xtf_file_line_edit.text().strip()))) self.msg.setWindowTitle(self.tr("Save in XTF Transfer File")) self.msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No) msg_box = self.msg.exec_() if msg_box == QMessageBox.No: return with OverrideCursor(Qt.WaitCursor): self.progress_bar.show() self.progress_bar.setValue(0) self.disable() self.txtStdout.setTextColor(QColor('#000000')) self.txtStdout.clear() exporter = iliexporter.Exporter() exporter.tool = self.type_combo_box.currentData() exporter.configuration = configuration self.save_configuration(configuration) exporter.stdout.connect(self.print_info) exporter.stderr.connect(self.on_stderr) exporter.process_started.connect(self.on_process_started) exporter.process_finished.connect(self.on_process_finished) self.progress_bar.setValue(25) try: if exporter.run() != iliexporter.Exporter.SUCCESS: self.enable() self.progress_bar.hide() return except JavaNotFoundError as e: self.txtStdout.setTextColor(QColor('#000000')) self.txtStdout.clear() self.txtStdout.setText(e.error_string) self.enable() self.progress_bar.hide() return self.buttonBox.clear() self.buttonBox.setEnabled(True) self.buttonBox.addButton(QDialogButtonBox.Close) self.progress_bar.setValue(100)
def _run(self, edited_command=None): if self.iface.actionToggleEditing().isChecked(): self.iface.actionToggleEditing().trigger() self.setStyleSheet(NOSTATUS_STYLE) self.progress_bar.setValue(0) self.progress_bar.setTextVisible(False) self._disable_controls(True) validator = ilivalidator.Validator() if validator: validator.tool = self.current_configuration.tool validator.configuration = self.current_configuration validator.configuration.ilimodels = "" validator.configuration.dataset = "" validator.configuration.baskets = [] if self.current_filter_mode == SchemaDataFilterMode.MODEL: validator.configuration.ilimodels = ";".join( self.current_models_model.checked_entries() ) elif self.current_filter_mode == SchemaDataFilterMode.DATASET: validator.configuration.dataset = ";".join( self.current_datasets_model.checked_entries() ) elif self.current_filter_mode == SchemaDataFilterMode.BASKET: validator.configuration.baskets = ( self.current_baskets_model.checked_entries() ) else: validator.configuration.ilimodels = ";".join( self.current_models_model.stringList() ) self.progress_bar.setValue(20) validation_result_state = False with OverrideCursor(Qt.WaitCursor): try: validation_result_state = ( validator.run(edited_command) == ilivalidator.Validator.SUCCESS ) except JavaNotFoundError: self.progress_bar.setValue(0) self.progress_bar.setFormat(self.tr("Ili2db validation problems")) self.progress_bar.setTextVisible(True) self._disable_controls(False) return self.progress_bar.setValue(50) result_model = ValidationResultTableModel(self.requested_roles) result_model.configuration = self.current_configuration result_model.valid = validation_result_state result_model.reload() self.progress_bar.setValue(75) self.schema_validations[ self.current_schema_identificator ].result_model = result_model self._disable_controls(False) self._set_result( self.schema_validations[ self.current_schema_identificator ].result_model.valid ) self.progress_bar.setValue(100)