diff --git a/importer/handlers/base.py b/importer/handlers/base.py index 5415a200..abc5e424 100644 --- a/importer/handlers/base.py +++ b/importer/handlers/base.py @@ -119,8 +119,7 @@ def fixup_name(self, name): .replace(")", "") .replace("(", "") .replace(",", "") - .replace("&", "") - [:62] + .replace("&", "")[:62] ) def extract_resource_to_publish(self, files, layer_name, alternate, **kwargs): @@ -132,7 +131,7 @@ def extract_resource_to_publish(self, files, layer_name, alternate, **kwargs): ] """ return NotImplementedError - + def overwrite_geoserver_resource(self, resource, catalog, store, workspace): """ Base method for override the geoserver resource. For vector file usually diff --git a/importer/handlers/common/raster.py b/importer/handlers/common/raster.py index 7a3543a2..19563022 100644 --- a/importer/handlers/common/raster.py +++ b/importer/handlers/common/raster.py @@ -130,7 +130,9 @@ def publish_resources(resources: List[str], catalog, store, workspace): raise e return True - def overwrite_geoserver_resource(self, resource: List[str], catalog, store, workspace): + def overwrite_geoserver_resource( + self, resource: List[str], catalog, store, workspace + ): # we need to delete the resource before recreating it self._delete_resource(resource, catalog, workspace) self._delete_store(resource, catalog, workspace) @@ -138,7 +140,11 @@ def overwrite_geoserver_resource(self, resource: List[str], catalog, store, work def _delete_store(self, resource, catalog, workspace): store = None - possible_layer_name = [resource.get("name"), resource.get("name").split(":")[-1], f"{workspace.name}:{resource.get('name')}"] + possible_layer_name = [ + resource.get("name"), + resource.get("name").split(":")[-1], + f"{workspace.name}:{resource.get('name')}", + ] for el in possible_layer_name: store = catalog.get_store(el, workspace=workspace) if store: @@ -149,7 +155,11 @@ def _delete_store(self, resource, catalog, workspace): def _delete_resource(self, resource, catalog, workspace): res = None - possible_layer_name = [resource.get("name"), resource.get("name").split(":")[-1], f"{workspace.name}:{resource.get('name')}"] + possible_layer_name = [ + resource.get("name"), + resource.get("name").split(":")[-1], + f"{workspace.name}:{resource.get('name')}", + ] for el in possible_layer_name: res = catalog.get_resource(el, workspace=workspace) if res: @@ -221,9 +231,9 @@ def extract_resource_to_publish( return [ { "name": alternate or layer_name, - "crs": self.identify_authority(layers) - if layers.GetSpatialRef() - else None, + "crs": ( + self.identify_authority(layers) if layers.GetSpatialRef() else None + ), "raster_path": files.get("base_file"), } ] @@ -388,7 +398,7 @@ def overwrite_geonode_resource( _overwrite = _exec.input_params.get("overwrite_existing_layer", False) # if the layer exists, we just update the information of the dataset by # let it recreate the catalogue - + if dataset.exists() and _overwrite: dataset = dataset.first() @@ -511,7 +521,7 @@ def rollback( ): steps = self.ACTIONS.get(action_to_rollback) if rollback_from_step not in steps: - return + return step_index = steps.index(rollback_from_step) # the start_import, start_copy etc.. dont do anything as step, is just the start # so there is nothing to rollback diff --git a/importer/handlers/common/tests_vector.py b/importer/handlers/common/tests_vector.py index 7010b696..99bce84c 100644 --- a/importer/handlers/common/tests_vector.py +++ b/importer/handlers/common/tests_vector.py @@ -226,7 +226,11 @@ def test_import_with_ogr2ogr_without_errors_should_call_the_right_command( _open.assert_called_once() _open.assert_called_with( - f'/usr/bin/ogr2ogr --config PG_USE_COPY YES -f PostgreSQL PG:" dbname=\'test_geonode_data\' host=' + os.getenv('DATABASE_HOST', 'localhost') + ' port=5432 user=\'geonode_data\' password=\'geonode_data\' " "' + self.valid_files.get("base_file") + '" -nln alternate "dataset"', + f"/usr/bin/ogr2ogr --config PG_USE_COPY YES -f PostgreSQL PG:\" dbname='test_geonode_data' host=" + + os.getenv("DATABASE_HOST", "localhost") + + " port=5432 user='geonode_data' password='geonode_data' \" \"" + + self.valid_files.get("base_file") + + '" -nln alternate "dataset"', stdout=-1, stderr=-1, shell=True, # noqa @@ -252,7 +256,11 @@ def test_import_with_ogr2ogr_with_errors_should_raise_exception(self, _open): _open.assert_called_once() _open.assert_called_with( - f'/usr/bin/ogr2ogr --config PG_USE_COPY YES -f PostgreSQL PG:" dbname=\'test_geonode_data\' host=' + os.getenv('DATABASE_HOST', 'localhost') + ' port=5432 user=\'geonode_data\' password=\'geonode_data\' " "' + self.valid_files.get("base_file") + '" -nln alternate "dataset"', + f"/usr/bin/ogr2ogr --config PG_USE_COPY YES -f PostgreSQL PG:\" dbname='test_geonode_data' host=" + + os.getenv("DATABASE_HOST", "localhost") + + " port=5432 user='geonode_data' password='geonode_data' \" \"" + + self.valid_files.get("base_file") + + '" -nln alternate "dataset"', stdout=-1, stderr=-1, shell=True, # noqa @@ -284,7 +292,7 @@ def test_import_with_ogr2ogr_without_errors_should_call_the_right_command_if_dum _open.assert_called_once() _call_as_string = _open.mock_calls[0][1][0] - - self.assertTrue('-f PGDump /vsistdout/' in _call_as_string) - self.assertTrue('psql -d' in _call_as_string) - self.assertFalse('-f PostgreSQL PG' in _call_as_string) + + self.assertTrue("-f PGDump /vsistdout/" in _call_as_string) + self.assertTrue("psql -d" in _call_as_string) + self.assertFalse("-f PostgreSQL PG" in _call_as_string) diff --git a/importer/handlers/common/vector.py b/importer/handlers/common/vector.py index fad34b04..0f8226b5 100644 --- a/importer/handlers/common/vector.py +++ b/importer/handlers/common/vector.py @@ -130,10 +130,7 @@ def publish_resources(resources: List[str], catalog, store, workspace): jdbc_virtual_table=_resource.get("name"), ) except Exception as e: - if ( - f"Resource named {_resource} already exists in store:" - in str(e) - ): + if f"Resource named {_resource} already exists in store:" in str(e): logger.error(f"error during publishing: {e}") continue logger.error(f"error during publishing: {e}") @@ -154,13 +151,13 @@ def create_ogr2ogr_command(files, original_name, ovverwrite_layer, alternate): This is a default command that is needed to import a vector file """ _datastore = settings.DATABASES["datastore"] - + options = "--config PG_USE_COPY YES" copy_with_dump = ast.literal_eval(os.getenv("OGR2OGR_COPY_WITH_DUMP", "False")) if copy_with_dump: # use PGDump to load the dataset with ogr2ogr - options += ' -f PGDump /vsistdout/ ' + options += " -f PGDump /vsistdout/ " else: # default option with postgres copy options += ( @@ -520,11 +517,13 @@ def create_dynamic_model_fields( ogr.GeometryTypeToName(layer.GetGeomType()) ) ), - "dim": 2 - if not ogr.GeometryTypeToName(layer.GetGeomType()) - .lower() - .startswith("3d") - else 3, + "dim": ( + 2 + if not ogr.GeometryTypeToName(layer.GetGeomType()) + .lower() + .startswith("3d") + else 3 + ), } ] diff --git a/importer/handlers/csv/handler.py b/importer/handlers/csv/handler.py index 80ebf79d..b82d9f22 100644 --- a/importer/handlers/csv/handler.py +++ b/importer/handlers/csv/handler.py @@ -195,11 +195,13 @@ def create_dynamic_model_fields( "name": layer.GetGeometryColumn() or self.default_geometry_column_name, "class_name": class_name, - "dim": 2 - if not ogr.GeometryTypeToName(layer.GetGeomType()) - .lower() - .startswith("3d") - else 3, + "dim": ( + 2 + if not ogr.GeometryTypeToName(layer.GetGeomType()) + .lower() + .startswith("3d") + else 3 + ), } ] @@ -241,9 +243,9 @@ def extract_resource_to_publish( return [ { "name": alternate or layer_name, - "crs": self.identify_authority(_l) - if _l.GetSpatialRef() - else "EPSG:4326", + "crs": ( + self.identify_authority(_l) if _l.GetSpatialRef() else "EPSG:4326" + ), } for _l in layers if self.fixup_name(_l.GetName()) == layer_name diff --git a/importer/handlers/csv/tests.py b/importer/handlers/csv/tests.py index b1c0fe9f..dae07006 100644 --- a/importer/handlers/csv/tests.py +++ b/importer/handlers/csv/tests.py @@ -165,7 +165,11 @@ def test_import_with_ogr2ogr_without_errors_should_call_the_right_command( _open.assert_called_once() _open.assert_called_with( - f'/usr/bin/ogr2ogr --config PG_USE_COPY YES -f PostgreSQL PG:" dbname=\'test_geonode_data\' host=' + os.getenv('DATABASE_HOST', 'localhost') + ' port=5432 user=\'geonode_data\' password=\'geonode_data\' " "' + self.valid_csv + '" -nln alternate "dataset" -oo KEEP_GEOM_COLUMNS=NO -lco GEOMETRY_NAME=geometry -oo "GEOM_POSSIBLE_NAMES=geom*,the_geom*,wkt_geom" -oo "X_POSSIBLE_NAMES=x,long*" -oo "Y_POSSIBLE_NAMES=y,lat*"', + f"/usr/bin/ogr2ogr --config PG_USE_COPY YES -f PostgreSQL PG:\" dbname='test_geonode_data' host=" + + os.getenv("DATABASE_HOST", "localhost") + + " port=5432 user='geonode_data' password='geonode_data' \" \"" + + self.valid_csv + + '" -nln alternate "dataset" -oo KEEP_GEOM_COLUMNS=NO -lco GEOMETRY_NAME=geometry -oo "GEOM_POSSIBLE_NAMES=geom*,the_geom*,wkt_geom" -oo "X_POSSIBLE_NAMES=x,long*" -oo "Y_POSSIBLE_NAMES=y,lat*"', stdout=-1, stderr=-1, shell=True, # noqa diff --git a/importer/handlers/geojson/tests.py b/importer/handlers/geojson/tests.py index 76b43a2f..26482218 100644 --- a/importer/handlers/geojson/tests.py +++ b/importer/handlers/geojson/tests.py @@ -131,7 +131,11 @@ def test_import_with_ogr2ogr_without_errors_should_call_the_right_command( _open.assert_called_once() _open.assert_called_with( - f'/usr/bin/ogr2ogr --config PG_USE_COPY YES -f PostgreSQL PG:" dbname=\'test_geonode_data\' host=' + os.getenv('DATABASE_HOST', 'localhost') + ' port=5432 user=\'geonode_data\' password=\'geonode_data\' " "' + self.valid_files.get("base_file") + '" -nln alternate "dataset" -lco GEOMETRY_NAME=geometry', + f"/usr/bin/ogr2ogr --config PG_USE_COPY YES -f PostgreSQL PG:\" dbname='test_geonode_data' host=" + + os.getenv("DATABASE_HOST", "localhost") + + " port=5432 user='geonode_data' password='geonode_data' \" \"" + + self.valid_files.get("base_file") + + '" -nln alternate "dataset" -lco GEOMETRY_NAME=geometry', stdout=-1, stderr=-1, shell=True, # noqa diff --git a/importer/handlers/gpkg/tests.py b/importer/handlers/gpkg/tests.py index 0b3ac94d..f143b184 100644 --- a/importer/handlers/gpkg/tests.py +++ b/importer/handlers/gpkg/tests.py @@ -56,10 +56,7 @@ def test_is_valid_should_raise_exception_if_the_gpkg_is_invalid(self): self.handler.is_valid(files=self.invalid_files, user=self.user) self.assertIsNotNone(_exc) - self.assertTrue( - "Error layer: INVALID LAYER_name" - in str(_exc.exception.detail) - ) + self.assertTrue("Error layer: INVALID LAYER_name" in str(_exc.exception.detail)) def test_is_valid_should_raise_exception_if_the_parallelism_is_met(self): parallelism, created = UploadParallelismLimit.objects.get_or_create( diff --git a/importer/handlers/shapefile/handler.py b/importer/handlers/shapefile/handler.py index 8239bda7..9ace3133 100644 --- a/importer/handlers/shapefile/handler.py +++ b/importer/handlers/shapefile/handler.py @@ -123,9 +123,11 @@ def is_valid(files, user): is_valid = all( map( lambda x: any( - _ext.endswith(f"{_filename}.{x}") - if isinstance(_ext, str) - else _ext.name.endswith(f"{_filename}.{x}") + ( + _ext.endswith(f"{_filename}.{x}") + if isinstance(_ext, str) + else _ext.name.endswith(f"{_filename}.{x}") + ) for _ext in files.values() ), _shp_ext_needed, @@ -156,22 +158,24 @@ def create_ogr2ogr_command(files, original_name, ovverwrite_layer, alternate): encoding = ShapeFileHandler._get_encoding(files) additional_options = [] - if layer is not None and "Point" not in ogr.GeometryTypeToName(layer.GetGeomType()): + if layer is not None and "Point" not in ogr.GeometryTypeToName( + layer.GetGeomType() + ): additional_options.append("-nlt PROMOTE_TO_MULTI") if encoding: additional_options.append(f"-lco ENCODING={encoding}") - + return ( f"{base_command } -lco precision=no -lco GEOMETRY_NAME={BaseVectorFileHandler().default_geometry_column_name} " + " ".join(additional_options) ) - + @staticmethod def _get_encoding(files): if files.get("cpg_file"): # prefer cpg file which is handled by gdal return None - + encoding = None if files.get("cst_file"): # GeoServer exports cst-file diff --git a/importer/handlers/shapefile/tests.py b/importer/handlers/shapefile/tests.py index b82c8771..a475363e 100644 --- a/importer/handlers/shapefile/tests.py +++ b/importer/handlers/shapefile/tests.py @@ -116,11 +116,11 @@ def test_should_create_ogr2ogr_command_with_encoding_from_cst(self): shp_with_cst = self.valid_shp.copy() cst_file = self.valid_shp["base_file"].replace("shp", "cst") shp_with_cst["cst_file"] = cst_file - patch_location = 'importer.handlers.shapefile.handler.open' - with patch(patch_location, new=mock_open(read_data='UTF-8')) as _file: + patch_location = "importer.handlers.shapefile.handler.open" + with patch(patch_location, new=mock_open(read_data="UTF-8")) as _file: actual = self.handler.create_ogr2ogr_command(shp_with_cst, "a", False, "a") - - _file.assert_called_once_with(cst_file, 'r') + + _file.assert_called_once_with(cst_file, "r") self.assertIn("ENCODING=UTF-8", actual) @patch("importer.handlers.common.vector.Popen") @@ -148,7 +148,11 @@ def test_import_with_ogr2ogr_without_errors_should_call_the_right_command( _open.assert_called_once() _open.assert_called_with( - f'/usr/bin/ogr2ogr --config PG_USE_COPY YES -f PostgreSQL PG:" dbname=\'test_geonode_data\' host=' + os.getenv('DATABASE_HOST', 'localhost') + ' port=5432 user=\'geonode_data\' password=\'geonode_data\' " "' + self.valid_shp.get("base_file") + '" -nln alternate "dataset" -lco precision=no -lco GEOMETRY_NAME=geometry ', + f"/usr/bin/ogr2ogr --config PG_USE_COPY YES -f PostgreSQL PG:\" dbname='test_geonode_data' host=" + + os.getenv("DATABASE_HOST", "localhost") + + " port=5432 user='geonode_data' password='geonode_data' \" \"" + + self.valid_shp.get("base_file") + + '" -nln alternate "dataset" -lco precision=no -lco GEOMETRY_NAME=geometry ', stdout=-1, stderr=-1, shell=True, # noqa diff --git a/importer/handlers/utils.py b/importer/handlers/utils.py index 6642138a..d83ee6cd 100644 --- a/importer/handlers/utils.py +++ b/importer/handlers/utils.py @@ -72,7 +72,9 @@ def create_alternate(layer_name, execution_id): """ _hash = hashlib.md5(f"{layer_name}_{execution_id}".encode("utf-8")).hexdigest() alternate = f"{layer_name}_{_hash}" - if len(alternate) > 63: # 63 is the max table lengh in postgres to stay safe, we cut at 12 + if ( + len(alternate) > 63 + ): # 63 is the max table lengh in postgres to stay safe, we cut at 12 return f"{layer_name[:50]}{_hash[:12]}" return alternate diff --git a/importer/migrations/0005_fixup_dynamic_shema_table_names.py b/importer/migrations/0005_fixup_dynamic_shema_table_names.py index 300eb547..07fdeab9 100644 --- a/importer/migrations/0005_fixup_dynamic_shema_table_names.py +++ b/importer/migrations/0005_fixup_dynamic_shema_table_names.py @@ -12,7 +12,10 @@ def fixup_table_name(apps, schema_editor): The dynamic model should exists to apply the migration. In case it does not exists we can skip it """ - if 'dynamic_models_modelschema' in schema_editor.connection.introspection.table_names(): + if ( + "dynamic_models_modelschema" + in schema_editor.connection.introspection.table_names() + ): schema = apps.get_model("dynamic_models", "ModelSchema") for val in schema.objects.all(): if val.name != val.db_table_name: diff --git a/importer/models.py b/importer/models.py index a02c3f25..e709c862 100644 --- a/importer/models.py +++ b/importer/models.py @@ -30,7 +30,6 @@ def delete_dynamic_model(instance, sender, **kwargs): class ResourceHandlerInfo(models.Model): - """ Here we save the relation between the geonode resource created and the handler that created that resource """ diff --git a/importer/tests/end2end/test_end2end.py b/importer/tests/end2end/test_end2end.py index 58b6f337..d9b03d2c 100644 --- a/importer/tests/end2end/test_end2end.py +++ b/importer/tests/end2end/test_end2end.py @@ -87,14 +87,18 @@ def _assertimport(self, payload, initial_name, overwrite=False, last_update=None _schema_id = ModelSchema.objects.filter(name__icontains=initial_name) self.assertTrue(_schema_id.exists()) schema_entity = _schema_id.first() - self.assertTrue(FieldSchema.objects.filter(model_schema=schema_entity).exists()) + self.assertTrue( + FieldSchema.objects.filter(model_schema=schema_entity).exists() + ) # Verify that ogr2ogr created the table with some data in it entries = ModelSchema.objects.filter(id=schema_entity.id).first() self.assertTrue(entries.as_model().objects.exists()) # check if the geonode resource exists - dataset = Dataset.objects.filter(alternate__icontains=f"geonode:{initial_name}") + dataset = Dataset.objects.filter( + alternate__icontains=f"geonode:{initial_name}" + ) self.assertTrue(dataset.exists()) # check if the resource is in geoserver @@ -103,9 +107,12 @@ def _assertimport(self, payload, initial_name, overwrite=False, last_update=None if overwrite: self.assertTrue(dataset.first().last_updated > last_update) finally: - dataset = Dataset.objects.filter(alternate__icontains=f"geonode:{initial_name}") + dataset = Dataset.objects.filter( + alternate__icontains=f"geonode:{initial_name}" + ) dataset.delete() + class ImporterGeoPackageImportTest(BaseImporterEndToEndTest): @mock.patch.dict(os.environ, {"GEONODE_GEODATABASE": "test_geonode_data"}) @override_settings( @@ -129,9 +136,7 @@ def test_import_geopackage(self): GEODATABASE_URL=f"{geourl.split('/geonode_data')[0]}/test_geonode_data" ) def test_import_gpkg_overwrite(self): - prev_dataset = create_single_dataset( - name="stazioni_metropolitana" - ) + prev_dataset = create_single_dataset(name="stazioni_metropolitana") layer = self.cat.get_layer("geonode:stazioni_metropolitana") if layer: @@ -140,8 +145,10 @@ def test_import_gpkg_overwrite(self): "base_file": open(self.valid_gkpg, "rb"), } initial_name = "stazioni_metropolitana" - payload['overwrite_existing_layer'] = True - self._assertimport(payload, initial_name, overwrite=True, last_update=prev_dataset.last_updated) + payload["overwrite_existing_layer"] = True + self._assertimport( + payload, initial_name, overwrite=True, last_update=prev_dataset.last_updated + ) layer = self.cat.get_layer("geonode:stazioni_metropolitana") if layer: self.cat.delete(layer) @@ -171,9 +178,7 @@ def test_import_geojson(self): GEODATABASE_URL=f"{geourl.split('/geonode_data')[0]}/test_geonode_data" ) def test_import_geojson_overwrite(self): - prev_dataset = create_single_dataset( - name="valid" - ) + prev_dataset = create_single_dataset(name="valid") layer = self.cat.get_layer("geonode:valid") if layer: @@ -182,8 +187,10 @@ def test_import_geojson_overwrite(self): "base_file": open(self.valid_geojson, "rb"), } initial_name = "valid" - payload['overwrite_existing_layer'] = True - self._assertimport(payload, initial_name, overwrite=True, last_update=prev_dataset.last_updated) + payload["overwrite_existing_layer"] = True + self._assertimport( + payload, initial_name, overwrite=True, last_update=prev_dataset.last_updated + ) layer = self.cat.get_layer("geonode:valid") if layer: self.cat.delete(layer) @@ -212,9 +219,7 @@ def test_import_kml(self): GEODATABASE_URL=f"{geourl.split('/geonode_data')[0]}/test_geonode_data" ) def test_import_kml_overwrite(self): - prev_dataset = create_single_dataset( - name="sample_point_dataset" - ) + prev_dataset = create_single_dataset(name="sample_point_dataset") layer = self.cat.get_layer("geonode:sample_point_dataset") if layer: @@ -223,8 +228,10 @@ def test_import_kml_overwrite(self): "base_file": open(self.valid_kml, "rb"), } initial_name = "sample_point_dataset" - payload['overwrite_existing_layer'] = True - self._assertimport(payload, initial_name, overwrite=True, last_update=prev_dataset.last_updated) + payload["overwrite_existing_layer"] = True + self._assertimport( + payload, initial_name, overwrite=True, last_update=prev_dataset.last_updated + ) layer = self.cat.get_layer("geonode:sample_point_dataset") if layer: self.cat.delete(layer) @@ -253,10 +260,8 @@ def test_import_shapefile(self): GEODATABASE_URL=f"{geourl.split('/geonode_data')[0]}/test_geonode_data" ) def test_import_shapefile_overwrite(self): - - prev_dataset = create_single_dataset( - name="san_andres_y_providencia_highway" - ) + + prev_dataset = create_single_dataset(name="san_andres_y_providencia_highway") layer = self.cat.get_layer("geonode:san_andres_y_providencia_highway") if layer: @@ -265,8 +270,10 @@ def test_import_shapefile_overwrite(self): _filename: open(_file, "rb") for _filename, _file in self.valid_shp.items() } initial_name = "san_andres_y_providencia_highway" - payload['overwrite_existing_layer'] = True - self._assertimport(payload, initial_name, overwrite=True, last_update=prev_dataset.last_updated) + payload["overwrite_existing_layer"] = True + self._assertimport( + payload, initial_name, overwrite=True, last_update=prev_dataset.last_updated + ) layer = self.cat.get_layer("geonode:san_andres_y_providencia_highway") if layer: self.cat.delete(layer) diff --git a/importer/tests/end2end/test_end2end_copy.py b/importer/tests/end2end/test_end2end_copy.py index 245ca2e1..46784403 100644 --- a/importer/tests/end2end/test_end2end_copy.py +++ b/importer/tests/end2end/test_end2end_copy.py @@ -126,7 +126,13 @@ def _wait_execution(self, response, _id="execution_id"): class ImporterCopyEnd2EndGpkgTest(BaseClassEnd2End): - @mock.patch.dict(os.environ, {"GEONODE_GEODATABASE": "test_geonode_data", "IMPORTER_ENABLE_DYN_MODELS": "True"}) + @mock.patch.dict( + os.environ, + { + "GEONODE_GEODATABASE": "test_geonode_data", + "IMPORTER_ENABLE_DYN_MODELS": "True", + }, + ) @override_settings( GEODATABASE_URL=f"{geourl.split('/geonode_data')[0]}/test_geonode_data" ) @@ -143,7 +149,13 @@ def test_copy_dataset_from_geopackage(self): class ImporterCopyEnd2EndGeoJsonTest(BaseClassEnd2End): - @mock.patch.dict(os.environ, {"GEONODE_GEODATABASE": "test_geonode_data", "IMPORTER_ENABLE_DYN_MODELS": "True"}) + @mock.patch.dict( + os.environ, + { + "GEONODE_GEODATABASE": "test_geonode_data", + "IMPORTER_ENABLE_DYN_MODELS": "True", + }, + ) @override_settings( GEODATABASE_URL=f"{geourl.split('/geonode_data')[0]}/test_geonode_data" ) @@ -159,7 +171,13 @@ def test_copy_dataset_from_geojson(self): class ImporterCopyEnd2EndShapeFileTest(BaseClassEnd2End): - @mock.patch.dict(os.environ, {"GEONODE_GEODATABASE": "test_geonode_data", "IMPORTER_ENABLE_DYN_MODELS": "True"}) + @mock.patch.dict( + os.environ, + { + "GEONODE_GEODATABASE": "test_geonode_data", + "IMPORTER_ENABLE_DYN_MODELS": "True", + }, + ) @override_settings( GEODATABASE_URL=f"{geourl.split('/geonode_data')[0]}/test_geonode_data" ) @@ -175,7 +193,13 @@ def test_copy_dataset_from_shapefile(self): class ImporterCopyEnd2EndKMLTest(BaseClassEnd2End): - @mock.patch.dict(os.environ, {"GEONODE_GEODATABASE": "test_geonode_data", "IMPORTER_ENABLE_DYN_MODELS": "True"}) + @mock.patch.dict( + os.environ, + { + "GEONODE_GEODATABASE": "test_geonode_data", + "IMPORTER_ENABLE_DYN_MODELS": "True", + }, + ) @override_settings( GEODATABASE_URL=f"{geourl.split('/geonode_data')[0]}/test_geonode_data" ) diff --git a/importer/tests/unit/test_models.py b/importer/tests/unit/test_models.py index 1996dd69..68104a02 100644 --- a/importer/tests/unit/test_models.py +++ b/importer/tests/unit/test_models.py @@ -6,6 +6,7 @@ from importer.tests.utils import TransactionImporterBaseTestSupport import uuid + class TestModelSchemaSignal(TransactionImporterBaseTestSupport): databases = ("default", "datastore") @@ -30,7 +31,7 @@ def test_delete_dynamic_model(self): Ensure that the dynamic model is deleted """ # create needed resource handler info - + ResourceHandlerInfo.objects.create( resource=self.resource, handler_module_path="importer.handlers.gpkg.handler.GPKGFileHandler", diff --git a/importer/tests/unit/test_publisher.py b/importer/tests/unit/test_publisher.py index d580c82d..e1201a88 100644 --- a/importer/tests/unit/test_publisher.py +++ b/importer/tests/unit/test_publisher.py @@ -21,7 +21,9 @@ def setUpClass(cls): cls.gpkg_path = f"{project_dir}/tests/fixture/valid.gpkg" def setUp(self): - layer = self.publisher.cat.get_resources('stazioni_metropolitana', workspaces="geonode") + layer = self.publisher.cat.get_resources( + "stazioni_metropolitana", workspaces="geonode" + ) print("delete layer") if layer: res = self.publisher.cat.delete(layer.resource, purge="all", recurse=True) @@ -29,7 +31,9 @@ def setUp(self): print(res.json) def tearDown(self): - layer = self.publisher.cat.get_resources('stazioni_metropolitana', workspaces="geonode") + layer = self.publisher.cat.get_resources( + "stazioni_metropolitana", workspaces="geonode" + ) print("delete layer teardown") if layer: self.publisher.cat.delete(layer) @@ -85,7 +89,6 @@ def test_publish_resources_should_raise_exception_if_any_error_happen( ) publish_featuretype.assert_called_once() - @patch("importer.publisher.Catalog.publish_featuretype") def test_publish_resources_should_work(self, publish_featuretype): publish_featuretype.return_value = True