2
0
Эх сурвалжийг харах

Added SpatialFeatures.supports_tolerance_parameter.

Tim Graham 4 жил өмнө
parent
commit
371022a20d

+ 3 - 0
django/contrib/gis/db/backends/base/features.py

@@ -51,6 +51,9 @@ class BaseSpatialFeatures:
     # Can SchemaEditor alter geometry fields?
     can_alter_geometry_field = True
 
+    # Do the database functions/aggregates support the tolerance parameter?
+    supports_tolerance_parameter = False
+
     # Set of options that AsGeoJSON() doesn't support.
     unsupported_geojson_options = {}
 

+ 1 - 0
django/contrib/gis/db/backends/oracle/features.py

@@ -10,4 +10,5 @@ class DatabaseFeatures(BaseSpatialFeatures, OracleDatabaseFeatures):
     supports_geometry_field_unique_index = False
     supports_perimeter_geodetic = True
     supports_dwithin_distance_expr = False
+    supports_tolerance_parameter = True
     unsupported_geojson_options = {'bbox', 'crs', 'precision'}

+ 2 - 8
tests/gis_tests/distapp/tests.py

@@ -432,10 +432,7 @@ class DistanceFunctionsTests(FuncTestMixin, TestCase):
         ).filter(d=D(m=1))
         self.assertTrue(qs.exists())
 
-    @unittest.skipUnless(
-        connection.vendor == 'oracle',
-        'Oracle supports tolerance parameter.',
-    )
+    @skipUnlessDBFeature('supports_tolerance_parameter')
     def test_distance_function_tolerance_escaping(self):
         qs = Interstate.objects.annotate(
             d=Distance(
@@ -448,10 +445,7 @@ class DistanceFunctionsTests(FuncTestMixin, TestCase):
         with self.assertRaisesMessage(TypeError, msg):
             qs.exists()
 
-    @unittest.skipUnless(
-        connection.vendor == 'oracle',
-        'Oracle supports tolerance parameter.',
-    )
+    @skipUnlessDBFeature('supports_tolerance_parameter')
     def test_distance_function_tolerance(self):
         # Tolerance is greater than distance.
         qs = Interstate.objects.annotate(

+ 2 - 8
tests/gis_tests/geoapp/tests.py

@@ -607,10 +607,7 @@ class GeoQuerySetTest(TestCase):
             ), True)
         self.assertIn('subquery', ctx.captured_queries[0]['sql'])
 
-    @unittest.skipUnless(
-        connection.vendor == 'oracle',
-        'Oracle supports tolerance parameter.',
-    )
+    @skipUnlessDBFeature('supports_tolerance_parameter')
     def test_unionagg_tolerance(self):
         City.objects.create(
             point=fromstr('POINT(-96.467222 32.751389)', srid=4326),
@@ -633,10 +630,7 @@ class GeoQuerySetTest(TestCase):
             True,
         )
 
-    @unittest.skipUnless(
-        connection.vendor == 'oracle',
-        'Oracle supports tolerance parameter.',
-    )
+    @skipUnlessDBFeature('supports_tolerance_parameter')
     def test_unionagg_tolerance_escaping(self):
         tx = Country.objects.get(name='Texas').mpoly
         with self.assertRaises(DatabaseError):