1
0
mirror of https://github.com/django/django.git synced 2025-10-25 22:56:12 +00:00

Fixed #36058 -- Refactored SpatialRefSysMixin.srs to use cached_property.

Replaced manual caching complexity with cached_property for efficiency.
Enhanced error handling with distinct messages for WKT and PROJ.4.

Thanks to Sarah Boyce for the suggestions.
This commit is contained in:
Arnaldo Govenem
2025-01-22 22:54:02 +02:00
committed by Sarah Boyce
parent 5f30fd2358
commit 8ff1399f06
2 changed files with 30 additions and 23 deletions

View File

@@ -1,5 +1,6 @@
import re
from django.contrib.gis.db.backends.base.models import SpatialRefSysMixin
from django.db import connection
from django.test import TestCase, skipUnlessDBFeature
from django.utils.functional import cached_property
@@ -147,3 +148,17 @@ class SpatialRefSysTest(TestCase):
self.assertTrue(
self.SpatialRefSys.get_spheroid(srs.wkt).startswith("SPHEROID[")
)
def test_srs_with_invalid_wkt_and_proj4(self):
class MockSpatialRefSys(SpatialRefSysMixin):
def __init__(self, wkt=None, proj4text=None):
self.wkt = wkt
self.proj4text = proj4text
with self.assertRaisesMessage(
Exception,
"Could not get OSR SpatialReference.\n"
"Error for WKT 'INVALID_WKT': Corrupt data.\n"
"Error for PROJ.4 '+proj=invalid': Corrupt data.",
):
MockSpatialRefSys(wkt="INVALID_WKT", proj4text="+proj=invalid").srs