summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2012-04-12 16:35:28 +0000
committerClaude Paroz <claude@2xlibre.net>2012-04-12 16:35:28 +0000
commit844e56e21aa45a4bf1c549129e46f7d7959c74d8 (patch)
treed60f62c705bef0b6eda95712e7674da36e99cc3c
parentcbc411571aac8299dc2a0c98d0366a972d5d5f6a (diff)
Fixed #18039 -- Changed geometry transform without a SRID raise a GEOSException.
This was planned in the official deprecation timeline for 1.5. git-svn-id: http://code.djangoproject.com/svn/django/trunk@17903 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/gis/geos/geometry.py7
-rw-r--r--django/contrib/gis/geos/tests/test_geos.py62
-rw-r--r--docs/ref/contrib/gis/geos.txt5
3 files changed, 12 insertions, 62 deletions
diff --git a/django/contrib/gis/geos/geometry.py b/django/contrib/gis/geos/geometry.py
index c56eeb345b..f411d5a353 100644
--- a/django/contrib/gis/geos/geometry.py
+++ b/django/contrib/gis/geos/geometry.py
@@ -3,7 +3,6 @@
inherit from this object.
"""
# Python, ctypes and types dependencies.
-import warnings
from ctypes import addressof, byref, c_double
# super-class for mutable list behavior
@@ -507,11 +506,7 @@ class GEOSGeometry(GEOSBase, ListMixin):
return
if (srid is None) or (srid < 0):
- warnings.warn("Calling transform() with no SRID set does no transformation!",
- stacklevel=2)
- warnings.warn("Calling transform() with no SRID will raise GEOSException in v1.5",
- FutureWarning, stacklevel=2)
- return
+ raise GEOSException("Calling transform() with no SRID set is not supported")
if not gdal.HAS_GDAL:
raise GEOSException("GDAL library is not available to transform() geometry.")
diff --git a/django/contrib/gis/geos/tests/test_geos.py b/django/contrib/gis/geos/tests/test_geos.py
index a8372b4f69..a6b50df635 100644
--- a/django/contrib/gis/geos/tests/test_geos.py
+++ b/django/contrib/gis/geos/tests/test_geos.py
@@ -891,63 +891,19 @@ class GEOSTest(unittest.TestCase, TestDataMixin):
gdal.HAS_GDAL = old_has_gdal
def test23_transform_nosrid(self):
- """ Testing `transform` method (no SRID) """
- # Raise a warning if SRID <0/None.
- import warnings
- print "\nBEGIN - expecting Warnings; safe to ignore.\n"
+ """ Testing `transform` method (no SRID or negative SRID) """
- # Test for do-nothing behavior.
- try:
- # Keeping line-noise down by only printing the relevant
- # warnings once.
- warnings.simplefilter('once', UserWarning)
- warnings.simplefilter('once', FutureWarning)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', srid=None)
- g.transform(2774)
- self.assertEqual(g.tuple, (-104.609, 38.255))
- self.assertEqual(g.srid, None)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', srid=None)
- g1 = g.transform(2774, clone=True)
- self.assertTrue(g1 is None)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', srid=-1)
- g.transform(2774)
- self.assertEqual(g.tuple, (-104.609, 38.255))
- self.assertEqual(g.srid, -1)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', srid=-1)
- g1 = g.transform(2774, clone=True)
- self.assertTrue(g1 is None)
-
- finally:
- warnings.simplefilter('default', UserWarning)
- warnings.simplefilter('default', FutureWarning)
+ g = GEOSGeometry('POINT (-104.609 38.255)', srid=None)
+ self.assertRaises(GEOSException, g.transform, 2774)
- print "\nEND - expecting Warnings; safe to ignore.\n"
+ g = GEOSGeometry('POINT (-104.609 38.255)', srid=None)
+ self.assertRaises(GEOSException, g.transform, 2774, clone=True)
+ g = GEOSGeometry('POINT (-104.609 38.255)', srid=-1)
+ self.assertRaises(GEOSException, g.transform, 2774)
- # test warning is raised
- try:
- warnings.simplefilter('error', FutureWarning)
- warnings.simplefilter('ignore', UserWarning)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', srid=None)
- self.assertRaises(FutureWarning, g.transform, 2774)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', srid=None)
- self.assertRaises(FutureWarning, g.transform, 2774, clone=True)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', srid=-1)
- self.assertRaises(FutureWarning, g.transform, 2774)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', srid=-1)
- self.assertRaises(FutureWarning, g.transform, 2774, clone=True)
- finally:
- warnings.simplefilter('default', FutureWarning)
- warnings.simplefilter('default', UserWarning)
-
+ g = GEOSGeometry('POINT (-104.609 38.255)', srid=-1)
+ self.assertRaises(GEOSException, g.transform, 2774, clone=True)
def test23_transform_nogdal(self):
""" Testing `transform` method (GDAL not available) """
diff --git a/docs/ref/contrib/gis/geos.txt b/docs/ref/contrib/gis/geos.txt
index a82ac87acf..9fceda32d0 100644
--- a/docs/ref/contrib/gis/geos.txt
+++ b/docs/ref/contrib/gis/geos.txt
@@ -542,9 +542,8 @@ is returned instead.
Prior to 1.3, this method would silently no-op if GDAL was not available.
Now, a :class:`~django.contrib.gis.geos.GEOSException` is raised as
application code relying on this behavior is in error. In addition,
- use of this method when the SRID is ``None`` or less than 0 now generates
- a warning because a :class:`~django.contrib.gis.geos.GEOSException` will
- be raised instead in version 1.5.
+ use of this method when the SRID is ``None`` or less than 0 now also generates
+ a :class:`~django.contrib.gis.geos.GEOSException`.
``Point``