def restore_settings(self): # Restore QSettings settings = QSettings() custom_model_directories_is_checked = settings.value( 'Asistente-LADM_COL/models/custom_model_directories_is_checked', DEFAULT_USE_CUSTOM_MODELS, type=bool) if custom_model_directories_is_checked: self.offline_models_radio_button.setChecked(True) self.custom_model_directories_line_edit.setText( settings.value('Asistente-LADM_COL/models/custom_models', DEFAULT_MODELS_DIR)) self.custom_model_directories_line_edit.setVisible(True) self.custom_models_dir_button.setVisible(True) else: self.online_models_radio_button.setChecked(True) self.custom_model_directories_line_edit.setText("") self.custom_model_directories_line_edit.setVisible(False) self.custom_models_dir_button.setVisible(False) use_roads = settings.value('Asistente-LADM_COL/quality/use_roads', True, bool) self.chk_use_roads.setChecked(use_roads) self.update_images_state(use_roads) self.chk_automatic_values_in_batch_mode.setChecked( settings.value( 'Asistente-LADM_COL/automatic_values/automatic_values_in_batch_mode', True, bool)) self.connection_box.setChecked( settings.value('Asistente-LADM_COL/sources/document_repository', True, bool)) self.namespace_collapsible_group_box.setChecked( settings.value( 'Asistente-LADM_COL/automatic_values/namespace_enabled', True, bool)) self.chk_local_id.setChecked( settings.value( 'Asistente-LADM_COL/automatic_values/local_id_enabled', True, bool)) self.txt_namespace.setText( str( settings.value( 'Asistente-LADM_COL/automatic_values/namespace_prefix', ""))) self.chk_validate_data_importing_exporting.setChecked( settings.value( 'Asistente-LADM_COL/advanced_settings/validate_data_importing_exporting', True, bool)) self.txt_service_transitional_system.setText( settings.value( 'Asistente-LADM_COL/sources/service_transitional_system', TransitionalSystemConfig().ST_DEFAULT_DOMAIN)) self.txt_service_endpoint.setText( settings.value('Asistente-LADM_COL/sources/service_endpoint', DEFAULT_ENDPOINT_SOURCE_SERVICE))
def __init__(self, user): QWidget.__init__(self) self.setupUi(self) self.logger = Logger() self.session = STSession() self._user = user self.st_config = TransitionalSystemConfig() self.lvw_tasks.itemSelectionChanged.connect(self.update_controls) self.lvw_tasks.itemDoubleClicked.connect(self.call_task_panel) self.btn_view_task.clicked.connect(self.view_task) self.btn_close_task.clicked.connect(self.close_task) self.update_controls() # Initialize controls
def __init__(self, task_id, parent): QgsPanelWidget.__init__(self, parent) self.setupUi(self) self.session = STSession() self._task = self.session.task_manager.get_task(task_id) self.parent = parent self.logger = Logger() self.st_config = TransitionalSystemConfig() self.setDockMode(True) self.setPanelTitle( QCoreApplication.translate("TaskPanelWidget", "Task details")) self.trw_task_steps.itemDoubleClicked.connect(self.trigger_action) self.trw_task_steps.itemChanged.connect(self.update_step_controls) self.session.task_manager.task_started.connect(self.update_task) self.session.task_manager.task_canceled.connect(self.acceptPanel) self.session.task_manager.task_closed.connect(self.acceptPanel) self.btn_start_task.clicked.connect(self.start_task) self.btn_cancel_task.clicked.connect(self.cancel_task) self.btn_close_task.clicked.connect(self.close_task) self.initialize_gui()
def __init__(self): QObject.__init__(self) self.logger = Logger() self.__registered_tasks = dict() self.st_config = TransitionalSystemConfig()
def login(self, user, password): msg = "" st_config = TransitionalSystemConfig() payload = st_config.ST_LOGIN_SERVICE_PAYLOAD.format(user, password) headers = { 'Content-Type': "application/x-www-form-urlencoded", 'Authorization': st_config.ST_LOGIN_AUTHORIZATION_CLIENT, 'Accept': "*/*", 'Cache-Control': "no-cache", 'Accept-Encoding': "gzip, deflate", 'Connection': "keep-alive", 'cache-control': "no-cache" } s = requests.Session() s.mount(st_config.ST_LOGIN_SERVICE_URL, HTTPAdapter(max_retries=0)) try: response = s.request("POST", st_config.ST_LOGIN_SERVICE_URL, data=payload, headers=headers) except requests.ConnectionError as e: msg = QCoreApplication.translate( "STSession", "There was an error accessing the login service. Details: {}" ).format(e) self.logger.warning(__name__, msg) return False, msg status_OK = response.status_code == 200 self.logger.info( __name__, "Login response status code: {}".format(response.status_code)) if status_OK: msg = QCoreApplication.translate( "STSession", "User logged in successfully in the Transitional System!") logged_data = json.loads(response.text) self.__logged_user = STLoggedUser( "{} {}".format(logged_data['first_name'], logged_data['last_name']), logged_data['email'], logged_data['roles'][0]['name'], logged_data['access_token']) QSettings().setValue( self.TOKEN_KEY, logged_data['access_token']) # Register (login) the user self.login_status_changed.emit(True) self.logger.info(__name__, msg) else: if response.status_code == 400: msg = QCoreApplication.translate( "STSession", "Wrong user name or password, change credentials and try again." ) elif response.status_code == 500: msg = QCoreApplication.translate( "STSession", "There is an error in the login server!") elif response.status_code > 500 and response.status_code < 600: msg = self.st_config.ST_STATUS_GT_500_MSG self.logger.warning(__name__, self.st_config.ST_STATUS_GT_500_MSG) elif response.status_code == 401: msg = QCoreApplication.translate( "STSession", "Unauthorized client! The server won't allow requests from this client." ) self.logger.warning(__name__, msg) return status_OK, msg
def login(self, user, password): msg = "" should_emit_role_changed = False st_config = TransitionalSystemConfig() payload = st_config.ST_LOGIN_SERVICE_PAYLOAD.format(user, password) headers = { 'Content-Type': "application/x-www-form-urlencoded", 'Authorization': st_config.ST_LOGIN_AUTHORIZATION_CLIENT, 'Accept': "*/*", 'Cache-Control': "no-cache", 'Accept-Encoding': "gzip, deflate", 'Connection': "keep-alive", 'cache-control': "no-cache" } s = requests.Session() s.mount(st_config.ST_LOGIN_SERVICE_URL, HTTPAdapter(max_retries=0)) try: response = s.request("POST", st_config.ST_LOGIN_SERVICE_URL, data=payload, headers=headers) except requests.ConnectionError as e: msg = QCoreApplication.translate("STSession", "There was an error accessing the login service. Details: {}").format(e) self.logger.warning(__name__, msg) return False, msg, False status_OK = response.status_code == 200 self.logger.info(__name__, "Login response status code: {}".format(response.status_code)) if status_OK: logged_data = json.loads(response.text) # Check if ST role is recognized by LADM-COL Assistant. Otherwise, do not login. st_role = logged_data['roles'][0]['id'] if st_role not in st_config.ROLE_MAPPING: return status_OK, \ QCoreApplication.translate("STSession", "The user cannot log-in into the Transitional System because the '{}' ST role has no tasks assigned in LADM-COL Assistant!".format(logged_data['roles'][0]['name'])), \ False msg = QCoreApplication.translate("STSession", "User logged in successfully in the Transitional System!") self.__logged_user = STLoggedUser("{} {}".format(logged_data['first_name'], logged_data['last_name']), logged_data['email'], logged_data['roles'][0]['name'], logged_data['access_token']) QSettings().setValue(self.TOKEN_KEY, logged_data['access_token']) # Register (login) the user # self.login_status_changed.emit(True) Don't emit now, a GUI refresh comes, so updates will be lost self.logger.info(__name__, msg) # Make LADM-COL Assistant's current role correspond to the logged in user role in ST if st_config.ROLE_MAPPING[st_role] != RoleRegistry().get_active_role(): RoleRegistry().set_active_role(st_config.ROLE_MAPPING[st_role], emit_signal=False) should_emit_role_changed = True # Safer to let the dialog deal with that SIGNAL (refreshes the GUI!) else: if response.status_code == 400: msg = QCoreApplication.translate("STSession", "Wrong user name or password, change credentials and try again.") elif response.status_code == 500: msg = QCoreApplication.translate("STSession", "There is an error in the login server!") elif response.status_code > 500 and response.status_code < 600: msg = st_config.ST_STATUS_GT_500_MSG self.logger.warning(__name__, st_config.ST_STATUS_GT_500_MSG) elif response.status_code == 401: msg = QCoreApplication.translate("STSession", "Unauthorized client! The server won't allow requests from this client.") self.logger.warning(__name__, msg) return status_OK, msg, should_emit_role_changed
def __init__(self): QObject.__init__(self) self.logger = Logger() self.st_session = STSession() self.st_config = TransitionalSystemConfig()
def set_default_value_transitional_system_service(self): self.txt_service_transitional_system.setText( TransitionalSystemConfig().ST_DEFAULT_DOMAIN)
def save_settings(self, db): settings = QSettings() current_db_engine = self.cbo_db_engine.currentData() settings.setValue( 'Asistente-LADM-COL/db/{db_source}/db_connection_engine'.format( db_source=self.db_source), current_db_engine) dict_conn = self._lst_panel[ current_db_engine].read_connection_parameters() self._lst_db[current_db_engine].save_parameters_conn( dict_conn=dict_conn, db_source=self.db_source) settings.setValue( 'Asistente-LADM-COL/models/custom_model_directories_is_checked', self.offline_models_radio_button.isChecked()) if self.offline_models_radio_button.isChecked(): settings.setValue('Asistente-LADM-COL/models/custom_models', self.custom_model_directories_line_edit.text()) self.app.settings.tolerance = self.sbx_tolerance.value() settings.setValue('Asistente-LADM-COL/quality/use_roads', self.chk_use_roads.isChecked()) settings.setValue( 'Asistente-LADM-COL/models/validate_data_importing_exporting', self.chk_validate_data_importing_exporting.isChecked()) endpoint_transitional_system = self.txt_service_transitional_system.text( ).strip() settings.setValue( 'Asistente-LADM-COL/sources/service_transitional_system', (endpoint_transitional_system[:-1] if endpoint_transitional_system.endswith('/') else endpoint_transitional_system) or TransitionalSystemConfig().ST_DEFAULT_DOMAIN) settings.setValue('Asistente-LADM-COL/sources/use_service', self.connection_box.isChecked()) endpoint = self.txt_service_endpoint.text().strip() settings.setValue( 'Asistente-LADM-COL/sources/service_endpoint', (endpoint[:-1] if endpoint.endswith('/') else endpoint) or DEFAULT_ENDPOINT_SOURCE_SERVICE) settings.setValue( 'Asistente-LADM-COL/automatic_values/automatic_values_in_batch_mode', self.chk_automatic_values_in_batch_mode.isChecked()) # Changes in automatic namespace, local_id or t_ili_tid configuration? current_namespace_enabled = settings.value( 'Asistente-LADM-COL/automatic_values/namespace_enabled', True, bool) current_namespace_prefix = settings.value( 'Asistente-LADM-COL/automatic_values/namespace_prefix', "") current_local_id_enabled = settings.value( 'Asistente-LADM-COL/automatic_values/local_id_enabled', True, bool) current_t_ili_tid_enabled = settings.value( 'Asistente-LADM-COL/automatic_values/t_ili_tid_enabled', True, bool) settings.setValue( 'Asistente-LADM-COL/automatic_values/namespace_enabled', self.namespace_collapsible_group_box.isChecked()) if self.namespace_collapsible_group_box.isChecked(): settings.setValue( 'Asistente-LADM-COL/automatic_values/namespace_prefix', self.txt_namespace.text()) settings.setValue( 'Asistente-LADM-COL/automatic_values/local_id_enabled', self.chk_local_id.isChecked()) settings.setValue( 'Asistente-LADM-COL/automatic_values/t_ili_tid_enabled', self.chk_t_ili_tid.isChecked()) if current_namespace_enabled != self.namespace_collapsible_group_box.isChecked() or \ current_namespace_prefix != self.txt_namespace.text() or \ current_local_id_enabled != self.chk_local_id.isChecked() or \ current_t_ili_tid_enabled != self.chk_t_ili_tid.isChecked(): if db is not None: self.logger.info( __name__, "Automatic values changed in Settings dialog. All LADM-COL layers are being updated..." ) self.app.core.automatic_fields_settings_changed(db)
def restore_settings(self): # Restore QSettings settings = QSettings() custom_model_directories_is_checked = self.app.settings.custom_models if custom_model_directories_is_checked: self.offline_models_radio_button.setChecked(True) self.custom_model_directories_line_edit.setText( self.app.settings.custom_model_dirs) self.custom_model_directories_line_edit.setVisible(True) self.custom_models_dir_button.setVisible(True) else: self.online_models_radio_button.setChecked(True) self.custom_model_directories_line_edit.setText("") self.custom_model_directories_line_edit.setVisible(False) self.custom_models_dir_button.setVisible(False) self.sbx_tolerance.setValue(self.app.settings.tolerance) use_roads = settings.value('Asistente-LADM-COL/quality/use_roads', True, bool) self.chk_use_roads.setChecked(use_roads) self.update_images_state(use_roads) self.chk_automatic_values_in_batch_mode.setChecked( settings.value( 'Asistente-LADM-COL/automatic_values/automatic_values_in_batch_mode', DEFAULT_AUTOMATIC_VALUES_IN_BATCH_MODE, bool)) self.connection_box.setChecked( settings.value('Asistente-LADM-COL/sources/use_service', DEFAULT_USE_SOURCE_SERVICE_SETTING, bool)) self.namespace_collapsible_group_box.setChecked( settings.value( 'Asistente-LADM-COL/automatic_values/namespace_enabled', True, bool)) self.chk_local_id.setChecked( settings.value( 'Asistente-LADM-COL/automatic_values/local_id_enabled', True, bool)) self.chk_t_ili_tid.setChecked( settings.value( 'Asistente-LADM-COL/automatic_values/t_ili_tid_enabled', True, bool)) self.txt_namespace.setText( str( settings.value( 'Asistente-LADM-COL/automatic_values/namespace_prefix', ""))) self.chk_validate_data_importing_exporting.setChecked( settings.value( 'Asistente-LADM-COL/models/validate_data_importing_exporting', True, bool)) self.chk_debug.setChecked( settings.value('Asistente-LADM-COL/models/debug', DEFAULT_ILI2DB_DEBUG_MODE, bool)) self.txt_log_file_path.setText( settings.value('Asistente-LADM-COL/models/log_file_path', '')) self.txt_service_transitional_system.setText( settings.value( 'Asistente-LADM-COL/sources/service_transitional_system', TransitionalSystemConfig().ST_DEFAULT_DOMAIN)) self.txt_service_endpoint.setText( settings.value('Asistente-LADM-COL/sources/service_endpoint', DEFAULT_ENDPOINT_SOURCE_SERVICE))
def save_settings(self): settings = QSettings() current_db_engine = self.cbo_db_engine.currentData() settings.setValue( 'Asistente-LADM_COL/db/{db_source}/db_connection_engine'.format( db_source=self.db_source), current_db_engine) dict_conn = self._lst_panel[ current_db_engine].read_connection_parameters() self._lst_db[current_db_engine].save_parameters_conn( dict_conn=dict_conn, db_source=self.db_source) settings.setValue( 'Asistente-LADM_COL/models/custom_model_directories_is_checked', self.offline_models_radio_button.isChecked()) if self.offline_models_radio_button.isChecked(): settings.setValue('Asistente-LADM_COL/models/custom_models', self.custom_model_directories_line_edit.text()) settings.setValue('Asistente-LADM_COL/quality/use_roads', self.chk_use_roads.isChecked()) settings.setValue( 'Asistente-LADM_COL/automatic_values/automatic_values_in_batch_mode', self.chk_automatic_values_in_batch_mode.isChecked()) settings.setValue('Asistente-LADM_COL/sources/document_repository', self.connection_box.isChecked()) settings.setValue( 'Asistente-LADM_COL/advanced_settings/validate_data_importing_exporting', self.chk_validate_data_importing_exporting.isChecked()) endpoint_transitional_system = self.txt_service_transitional_system.text( ).strip() settings.setValue( 'Asistente-LADM_COL/sources/service_transitional_system', (endpoint_transitional_system[:-1] if endpoint_transitional_system.endswith('/') else endpoint_transitional_system) or TransitionalSystemConfig().ST_DEFAULT_DOMAIN) endpoint = self.txt_service_endpoint.text().strip() settings.setValue( 'Asistente-LADM_COL/sources/service_endpoint', (endpoint[:-1] if endpoint.endswith('/') else endpoint) or DEFAULT_ENDPOINT_SOURCE_SERVICE) # Changes in automatic namespace or local_id configuration? current_namespace_enabled = settings.value( 'Asistente-LADM_COL/automatic_values/namespace_enabled', True, bool) current_namespace_prefix = settings.value( 'Asistente-LADM_COL/automatic_values/namespace_prefix', "") current_local_id_enabled = settings.value( 'Asistente-LADM_COL/automatic_values/local_id_enabled', True, bool) settings.setValue( 'Asistente-LADM_COL/automatic_values/namespace_enabled', self.namespace_collapsible_group_box.isChecked()) if self.namespace_collapsible_group_box.isChecked(): settings.setValue( 'Asistente-LADM_COL/automatic_values/namespace_prefix', self.txt_namespace.text()) settings.setValue( 'Asistente-LADM_COL/automatic_values/local_id_enabled', self.chk_local_id.isChecked()) if current_namespace_enabled != self.namespace_collapsible_group_box.isChecked() or \ current_namespace_prefix != self.txt_namespace.text() or \ current_local_id_enabled != self.chk_local_id.isChecked(): if self._db is not None: self.qgis_utils.automatic_namespace_local_id_configuration_changed( self._db)