def read_model_parser(self): if self.model_parser is None: try: self.model_parser = ModelParser(self) except psycopg2.ProgrammingError as e: # if it is not possible to access the schema due to lack of privileges return False return True
def _test_connection_to_ladm(self, required_models): database = os.path.basename(self._dict_conn_params['dbfile']) if not self._metadata_exists(): return False, EnumTestConnectionMsg.INTERLIS_META_ATTRIBUTES_NOT_FOUND, QCoreApplication.translate( "GPKGConnector", "The database '{}' is not a valid LADM-COL database. That is, the database doesn't have the structure of the LADM-COL model." ).format(database) if self.get_ili2db_version() != 4: return False, EnumTestConnectionMsg.INVALID_ILI2DB_VERSION, QCoreApplication.translate( "GPKGConnector", "The database '{}' was created with an old version of ili2db (v3), which is no longer supported. You need to migrate it to ili2db4." ).format(database) if self.model_parser is None: self.model_parser = ModelParser(self) res, code, msg = self.check_db_models(required_models) if not res: return res, code, msg basket_required, model_name = self._db_should_have_basket_support() if basket_required and not self._has_basket_col(): return False, EnumTestConnectionMsg.BASKET_COLUMN_NOT_FOUND, \ QCoreApplication.translate("GPKGConnector", "Basket column not found, but it is required by model '{}'!.").format(model_name) # Validate table and field names if self._should_update_db_mapping_values: self._initialize_names() res, msg = self.names.test_names( self._get_flat_table_and_field_names_for_testing_names()) if not res: return False, EnumTestConnectionMsg.DB_NAMES_INCOMPLETE, QCoreApplication.translate( "PGConnector", "Table/field names from the DB are not correct. Details: {}." ).format(msg) return True, EnumTestConnectionMsg.DB_WITH_VALID_LADM_COL_STRUCTURE, QCoreApplication.translate( "GPKGConnector", "The database '{}' has a valid LADM-COL structure!").format( database)