Skip to content

Commit e57fdc0

Browse files
[Fixes #13520] Improve Error Robustness for special characters and wh… (#13655)
1 parent e489286 commit e57fdc0

File tree

6 files changed

+8
-14
lines changed

6 files changed

+8
-14
lines changed

geonode/upload/handlers/base.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import zipfile
2525
import re
2626

27+
import slugify
28+
2729
from geonode.assets.utils import create_asset_and_link
2830
from geonode.resource.enumerator import ExecutionRequestAction as exa
2931
from geonode.layers.models import Dataset
@@ -232,7 +234,7 @@ def fixup_name(self, name):
232234
# Remove unwanted characters in one pass
233235
name = re.sub(r'[.(),!"$%\'*+/:;<=>?@\[\]^`{|}~]', "", name)
234236

235-
return name[:62]
237+
return slugify.slugify(name[:62], separator="_")
236238

237239
def extract_resource_to_publish(self, files, layer_name, alternate, **kwargs):
238240
"""

geonode/upload/handlers/gpkg/handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def is_valid(files, user, **kwargs):
138138

139139
validator = validate(
140140
gpkg_path=files.get("base_file"),
141-
validations="RQ1, RQ2, RQ13, RQ14, RQ15, RC18",
141+
validations="RQ2, RQ13, RQ14, RQ15, RC18",
142142
)
143143
if not validator[-1]:
144144
error_to_raise = []

geonode/upload/handlers/gpkg/tests.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import shutil
2020

2121
from django.test import TestCase, override_settings
22-
from geonode.upload.handlers.gpkg.exceptions import InvalidGeopackageException
2322
from django.contrib.auth import get_user_model
2423
from geonode.upload.handlers.gpkg.handler import GPKGFileHandler
2524
from geonode.upload import project_dir
@@ -69,13 +68,6 @@ def test_task_list_is_the_expected_one_geojson(self):
6968
self.assertEqual(len(self.handler.TASKS["copy"]), 5)
7069
self.assertTupleEqual(expected, self.handler.TASKS["copy"])
7170

72-
def test_is_valid_should_raise_exception_if_the_gpkg_is_invalid(self):
73-
with self.assertRaises(InvalidGeopackageException) as _exc:
74-
self.handler.is_valid(files=self.invalid_files, user=self.user)
75-
76-
self.assertIsNotNone(_exc)
77-
self.assertTrue("Error layer: INVALID LAYER_name" in str(_exc.exception.detail))
78-
7971
def test_is_valid_should_raise_exception_if_the_parallelism_is_met(self):
8072
parallelism, created = UploadParallelismLimit.objects.get_or_create(slug="default_max_parallel_uploads")
8173
old_value = parallelism.max_number

geonode/upload/handlers/tests.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,12 @@ def test_fixup_name_replace_digits_with_underscore(self):
8989
If the layer start with a digit, we should translate as a string
9090
"""
9191
layer_name = "1layername"
92-
expected_name = "_layername"
92+
expected_name = "layername"
9393
actual = BaseHandler().fixup_name(layer_name)
9494
self.assertEqual(expected_name, actual)
9595

9696
def test_fixup_name_replace_digits_with_special_character(self):
9797
layer_name = "5Test-Name# \\&.()!$%*+@[]~end"
98-
expected_name = "_test_name____end"
98+
expected_name = "test_name_end"
9999
actual = BaseHandler().fixup_name(layer_name)
100100
self.assertEqual(expected_name, actual)

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ gisdata==0.5.4
9494

9595
# importer dependencies
9696
setuptools>=59
97-
pdok-geopackage-validator==0.8.5
97+
pdok-geopackage-validator==0.14.4
9898
geonode-django-dynamic-model==0.4.0
9999

100100

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ install_requires =
119119

120120
# importer dependencies
121121
setuptools>=59
122-
pdok-geopackage-validator==0.8.5
122+
pdok-geopackage-validator==0.14.4
123123
geonode-django-dynamic-model==0.4.0
124124

125125
# datetimepicker widget

0 commit comments

Comments
 (0)