diff --git a/importer/handlers/csv/handler.py b/importer/handlers/csv/handler.py index d805883a..67b338f8 100644 --- a/importer/handlers/csv/handler.py +++ b/importer/handlers/csv/handler.py @@ -244,9 +244,16 @@ def extract_resource_to_publish( { "name": alternate or layer_name, "crs": ( - self.identify_authority(_l) if _l.GetSpatialRef() else "EPSG:4326" + self.identify_authority(_l) ), } for _l in layers if self.fixup_name(_l.GetName()) == layer_name ] + + def identify_authority(self, layer): + try: + authority_code = super().identify_authority(layer=layer) + return authority_code + except Exception: + return "EPSG:4326" diff --git a/importer/tests/end2end/test_end2end.py b/importer/tests/end2end/test_end2end.py index 0cc3001b..a042e270 100644 --- a/importer/tests/end2end/test_end2end.py +++ b/importer/tests/end2end/test_end2end.py @@ -37,6 +37,7 @@ def setUpClass(cls) -> None: } cls.valid_kml = f"{project_dir}/tests/fixture/valid.kml" cls.valid_tif = f"{project_dir}/tests/fixture/test_grid.tif" + cls.valid_csv = f"{project_dir}/tests/fixture/valid.csv" cls.url = reverse("importer_upload") ogc_server_settings = OGC_Servers_Handler(settings.OGC_SERVER)["default"] @@ -258,6 +259,48 @@ def test_import_geojson_overwrite(self): self.cat.delete(layer) +class ImporterGCSVImportTest(BaseImporterEndToEndTest): + @mock.patch.dict(os.environ, {"GEONODE_GEODATABASE": "test_geonode_data"}) + @override_settings( + GEODATABASE_URL=f"{geourl.split('/geonode_data')[0]}/test_geonode_data" + ) + def test_import_geojson(self): + layer = self.cat.get_layer("geonode:valid") + if layer: + self.cat.delete(layer) + + payload = { + "base_file": open(self.valid_csv, "rb"), + } + initial_name = "valid" + self._assertimport(payload, initial_name) + layer = self.cat.get_layer("geonode:valid") + if layer: + self.cat.delete(layer) + + @mock.patch.dict(os.environ, {"GEONODE_GEODATABASE": "test_geonode_data"}) + @override_settings( + GEODATABASE_URL=f"{geourl.split('/geonode_data')[0]}/test_geonode_data" + ) + def test_import_csv_overwrite(self): + prev_dataset = create_single_dataset(name="valid") + + layer = self.cat.get_layer("geonode:valid") + if layer: + self.cat.delete(layer) + payload = { + "base_file": open(self.valid_csv, "rb"), + } + initial_name = "valid" + 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) + + class ImporterKMLImportTest(BaseImporterEndToEndTest): @mock.patch.dict(os.environ, {"GEONODE_GEODATABASE": "test_geonode_data"}) @override_settings(