summaryrefslogtreecommitdiff
path: root/django/contrib/gis
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2025-06-05 16:18:56 -0400
committerGitHub <noreply@github.com>2025-06-05 22:18:56 +0200
commitcf1a80fc2d19f359744a20bb6cb1f0a169ef506b (patch)
tree25e40d62be4a050fcba26bdddc3eae41313190fd /django/contrib/gis
parentf0a87895ffaf6532a22143b5e2e304c59b7958ae (diff)
Added validation to BaseSpatialFeatures.has_<Func>_function.
Diffstat (limited to 'django/contrib/gis')
-rw-r--r--django/contrib/gis/db/backends/base/features.py8
-rw-r--r--django/contrib/gis/db/backends/base/operations.py4
2 files changed, 12 insertions, 0 deletions
diff --git a/django/contrib/gis/db/backends/base/features.py b/django/contrib/gis/db/backends/base/features.py
index cc4ce1046b..22c90a1714 100644
--- a/django/contrib/gis/db/backends/base/features.py
+++ b/django/contrib/gis/db/backends/base/features.py
@@ -2,6 +2,8 @@ import re
from django.contrib.gis.db import models
+from .operations import BaseSpatialOperations
+
class BaseSpatialFeatures:
gis_enabled = True
@@ -107,5 +109,11 @@ class BaseSpatialFeatures:
m = re.match(r"has_(\w*)_function$", name)
if m:
func_name = m[1]
+ if func_name not in BaseSpatialOperations.unsupported_functions:
+ raise ValueError(
+ f"DatabaseFeatures.has_{func_name}_function isn't valid. "
+ f'Is "{func_name}" missing from '
+ "BaseSpatialOperations.unsupported_functions?"
+ )
return func_name not in self.connection.ops.unsupported_functions
raise AttributeError
diff --git a/django/contrib/gis/db/backends/base/operations.py b/django/contrib/gis/db/backends/base/operations.py
index e97e694d1d..8351e71fbd 100644
--- a/django/contrib/gis/db/backends/base/operations.py
+++ b/django/contrib/gis/db/backends/base/operations.py
@@ -39,13 +39,17 @@ class BaseSpatialOperations:
"AsGML",
"AsKML",
"AsSVG",
+ "AsWKB",
+ "AsWKT",
"Azimuth",
"BoundingCircle",
"Centroid",
"ClosestPoint",
"Difference",
"Distance",
+ "DistanceSpheroid",
"Envelope",
+ "ForcePolygonCW",
"FromWKB",
"FromWKT",
"GeoHash",