summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Brand <stefan.brand@eox.at>2023-02-17 09:38:39 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-02-17 19:56:29 +0100
commitd77762de038d1ab46cdcda2b7202d36c80956e25 (patch)
treedcb38776dd0c26f14fdc18357223d5c8f5e6568a
parent52b054824e899db40ba48f908a9a00dadc56cb89 (diff)
Refs #34302 -- Fixed SpatialReference.auth_name()/auth_code() when target is None.
force_bytes() turns None into the byte string b"None". Since ctypes.c_char_p() also accepts None, we can bypass force_bytes() if target is None.
-rw-r--r--django/contrib/gis/gdal/srs.py8
-rw-r--r--tests/gis_tests/gdal_tests/test_srs.py7
2 files changed, 12 insertions, 3 deletions
diff --git a/django/contrib/gis/gdal/srs.py b/django/contrib/gis/gdal/srs.py
index c8877753fd..dc52954acf 100644
--- a/django/contrib/gis/gdal/srs.py
+++ b/django/contrib/gis/gdal/srs.py
@@ -159,11 +159,15 @@ class SpatialReference(GDALBase):
def auth_name(self, target):
"Return the authority name for the given string target node."
- return capi.get_auth_name(self.ptr, force_bytes(target))
+ return capi.get_auth_name(
+ self.ptr, target if target is None else force_bytes(target)
+ )
def auth_code(self, target):
"Return the authority code for the given string target node."
- return capi.get_auth_code(self.ptr, force_bytes(target))
+ return capi.get_auth_code(
+ self.ptr, target if target is None else force_bytes(target)
+ )
def clone(self):
"Return a clone of this SpatialReference object."
diff --git a/tests/gis_tests/gdal_tests/test_srs.py b/tests/gis_tests/gdal_tests/test_srs.py
index fd25dcbc34..293144aa8e 100644
--- a/tests/gis_tests/gdal_tests/test_srs.py
+++ b/tests/gis_tests/gdal_tests/test_srs.py
@@ -35,7 +35,11 @@ srlist = (
ang_name="degree",
lin_units=1.0,
ang_units=0.0174532925199,
- auth={"GEOGCS": ("EPSG", "4326"), "spheroid": ("EPSG", "7030")},
+ auth={
+ None: ("EPSG", "4326"), # Top-level authority.
+ "GEOGCS": ("EPSG", "4326"),
+ "spheroid": ("EPSG", "7030"),
+ },
attr=(
("DATUM", "WGS_1984"),
(("SPHEROID", 1), "6378137"),
@@ -64,6 +68,7 @@ srlist = (
lin_units=1.0,
ang_units=0.0174532925199,
auth={
+ None: ("EPSG", "32140"), # Top-level authority.
"PROJCS": ("EPSG", "32140"),
"spheroid": ("EPSG", "7019"),
"unit": ("EPSG", "9001"),