From cf1a80fc2d19f359744a20bb6cb1f0a169ef506b Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Thu, 5 Jun 2025 16:18:56 -0400 Subject: Added validation to BaseSpatialFeatures.has__function. --- django/contrib/gis/db/backends/base/features.py | 8 ++++++++ django/contrib/gis/db/backends/base/operations.py | 4 ++++ 2 files changed, 12 insertions(+) (limited to 'django') 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", -- cgit v1.3