Skip to content

Commit

Permalink
Merge pull request #243 from GeoNode/ISSUE_242
Browse files Browse the repository at this point in the history
[Fixes #242] CRS parsing is not correctly handled for CSV files
  • Loading branch information
giohappy authored May 22, 2024
2 parents 4774a3c + e324527 commit c5b1746
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 1 deletion.
9 changes: 8 additions & 1 deletion importer/handlers/csv/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
43 changes: 43 additions & 0 deletions importer/tests/end2end/test_end2end.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
Expand Down Expand Up @@ -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(
Expand Down

0 comments on commit c5b1746

Please sign in to comment.