summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Fedoseev <fedoseev.sergey@gmail.com>2015-11-04 23:56:14 +0500
committerTim Graham <timograham@gmail.com>2015-11-18 11:49:48 -0500
commitb7177cc2a422a0183c8f2d56eceb6b9323c6f959 (patch)
treec7ad8820b2429336b798a3aeb229960fb5943084
parent5f7f3b46853c958789361a7defda8ca3c3c2be53 (diff)
Refs #25665 -- Deprecated getter/setter of GEOSGeometry.srid.
-rw-r--r--django/contrib/gis/geos/geometry.py29
-rw-r--r--docs/internals/deprecation.txt3
-rw-r--r--docs/releases/1.10.txt7
-rw-r--r--tests/gis_tests/geos_tests/test_geos.py14
4 files changed, 44 insertions, 9 deletions
diff --git a/django/contrib/gis/geos/geometry.py b/django/contrib/gis/geos/geometry.py
index 82fc02667a..78e6aa900b 100644
--- a/django/contrib/gis/geos/geometry.py
+++ b/django/contrib/gis/geos/geometry.py
@@ -5,6 +5,7 @@
from __future__ import unicode_literals
import json
+import warnings
from ctypes import addressof, byref, c_double
from django.contrib.gis import gdal
@@ -20,6 +21,7 @@ from django.contrib.gis.geos.prototypes.io import (
ewkb_w, wkb_r, wkb_w, wkt_r, wkt_w,
)
from django.utils import six
+from django.utils.deprecation import RemovedInDjango20Warning
from django.utils.encoding import force_bytes, force_text
@@ -356,7 +358,8 @@ class GEOSGeometry(GEOSBase, ListMixin):
return capi.geos_within(self.ptr, other.ptr)
# #### SRID Routines ####
- def get_srid(self):
+ @property
+ def srid(self):
"Gets the SRID for the geometry, returns None if no SRID is set."
s = capi.geos_get_srid(self.ptr)
if s == 0:
@@ -364,10 +367,24 @@ class GEOSGeometry(GEOSBase, ListMixin):
else:
return s
- def set_srid(self, srid):
+ @srid.setter
+ def srid(self, srid):
"Sets the SRID for the geometry."
capi.geos_set_srid(self.ptr, 0 if srid is None else srid)
- srid = property(get_srid, set_srid)
+
+ def get_srid(self):
+ warnings.warn(
+ "`get_srid()` is deprecated, use the `srid` property instead.",
+ RemovedInDjango20Warning, 2
+ )
+ return self.srid
+
+ def set_srid(self, srid):
+ warnings.warn(
+ "`set_srid()` is deprecated, use the `srid` property instead.",
+ RemovedInDjango20Warning, 2
+ )
+ self.srid = srid
# #### Output Routines ####
@property
@@ -375,10 +392,8 @@ class GEOSGeometry(GEOSBase, ListMixin):
"""
Returns the EWKT (SRID + WKT) of the Geometry.
"""
- if self.get_srid():
- return 'SRID=%s;%s' % (self.srid, self.wkt)
- else:
- return self.wkt
+ srid = self.srid
+ return 'SRID=%s;%s' % (srid, self.wkt) if srid else self.wkt
@property
def wkt(self):
diff --git a/docs/internals/deprecation.txt b/docs/internals/deprecation.txt
index 6b5eb95ad0..db2bf02af2 100644
--- a/docs/internals/deprecation.txt
+++ b/docs/internals/deprecation.txt
@@ -112,6 +112,9 @@ details on these changes.
* Support for direct assignment to a reverse foreign key or many-to-many
relation will be removed.
+* The ``get_srid()`` and ``set_srid()`` methods of
+ ``django.contrib.gis.geos.GEOSGeometry`` will be removed.
+
.. _deprecation-removed-in-1.10:
1.10
diff --git a/docs/releases/1.10.txt b/docs/releases/1.10.txt
index 1e51c1dec9..d4a0e63094 100644
--- a/docs/releases/1.10.txt
+++ b/docs/releases/1.10.txt
@@ -328,6 +328,13 @@ added in Django 1.9::
This prevents confusion about an assignment resulting in an implicit save.
+:mod:`django.contrib.gis`
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+* The ``get_srid()`` and ``set_srid()`` methods of
+ :class:`~django.contrib.gis.geos.GEOSGeometry` are deprecated in favor
+ of the :attr:`~django.contrib.gis.geos.GEOSGeometry.srid` property.
+
Miscellaneous
~~~~~~~~~~~~~
diff --git a/tests/gis_tests/geos_tests/test_geos.py b/tests/gis_tests/geos_tests/test_geos.py
index b0f3a80ac4..504676d4c6 100644
--- a/tests/gis_tests/geos_tests/test_geos.py
+++ b/tests/gis_tests/geos_tests/test_geos.py
@@ -19,8 +19,9 @@ from django.contrib.gis.geos.base import GEOSBase
from django.contrib.gis.shortcuts import numpy
from django.template import Context
from django.template.engine import Engine
-from django.test import mock
+from django.test import ignore_warnings, mock
from django.utils import six
+from django.utils.deprecation import RemovedInDjango20Warning
from django.utils.encoding import force_bytes
from django.utils.six.moves import range
@@ -629,7 +630,8 @@ class GEOSTest(unittest.TestCase, TestDataMixin):
self.assertEqual(4326, pnt.srid)
pnt.srid = 3084
self.assertEqual(3084, pnt.srid)
- self.assertRaises(ctypes.ArgumentError, pnt.set_srid, '4326')
+ with self.assertRaises(ctypes.ArgumentError):
+ pnt.srid = '4326'
# Testing SRID keyword on fromstr(), and on Polygon rings.
poly = fromstr(self.geometries.polygons[1].wkt, srid=4269)
@@ -1138,3 +1140,11 @@ class GEOSTest(unittest.TestCase, TestDataMixin):
self.assertTrue(m, msg="Unable to parse the version string '%s'" % v_init)
self.assertEqual(m.group('version'), v_geos)
self.assertEqual(m.group('capi_version'), v_capi)
+
+ @ignore_warnings(category=RemovedInDjango20Warning)
+ def test_deprecated_srid_getters_setters(self):
+ p = Point(1, 2, srid=123)
+ self.assertEqual(p.get_srid(), p.srid)
+
+ p.set_srid(321)
+ self.assertEqual(p.srid, 321)