summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2022-12-31 15:32:35 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-01-03 05:47:44 +0100
commit2a14b8df39b573124ea42dec0ce96147c8e767d4 (patch)
treec18003040c58d555c245ab1fe5e1e3085754eade /django
parent6774e9359cbdbf7b8c448597c103288ac381519a (diff)
Fixed #33783 -- Added IsEmpty GIS database function and __isempty lookup on PostGIS.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/gis/db/backends/base/operations.py1
-rw-r--r--django/contrib/gis/db/backends/mysql/operations.py1
-rw-r--r--django/contrib/gis/db/backends/oracle/operations.py1
-rw-r--r--django/contrib/gis/db/backends/spatialite/operations.py2
-rw-r--r--django/contrib/gis/db/models/functions.py6
5 files changed, 10 insertions, 1 deletions
diff --git a/django/contrib/gis/db/backends/base/operations.py b/django/contrib/gis/db/backends/base/operations.py
index e7bffb11b4..f6eaf8f503 100644
--- a/django/contrib/gis/db/backends/base/operations.py
+++ b/django/contrib/gis/db/backends/base/operations.py
@@ -48,6 +48,7 @@ class BaseSpatialOperations:
"GeoHash",
"GeometryDistance",
"Intersection",
+ "IsEmpty",
"IsValid",
"Length",
"LineLocatePoint",
diff --git a/django/contrib/gis/db/backends/mysql/operations.py b/django/contrib/gis/db/backends/mysql/operations.py
index 6d04874537..46d8fc5d6a 100644
--- a/django/contrib/gis/db/backends/mysql/operations.py
+++ b/django/contrib/gis/db/backends/mysql/operations.py
@@ -72,6 +72,7 @@ class MySQLOperations(BaseSpatialOperations, DatabaseOperations):
"BoundingCircle",
"ForcePolygonCW",
"GeometryDistance",
+ "IsEmpty",
"LineLocatePoint",
"MakeValid",
"MemSize",
diff --git a/django/contrib/gis/db/backends/oracle/operations.py b/django/contrib/gis/db/backends/oracle/operations.py
index ba7e3ca4d8..aefb2f74e2 100644
--- a/django/contrib/gis/db/backends/oracle/operations.py
+++ b/django/contrib/gis/db/backends/oracle/operations.py
@@ -122,6 +122,7 @@ class OracleOperations(BaseSpatialOperations, DatabaseOperations):
"ForcePolygonCW",
"GeoHash",
"GeometryDistance",
+ "IsEmpty",
"LineLocatePoint",
"MakeValid",
"MemSize",
diff --git a/django/contrib/gis/db/backends/spatialite/operations.py b/django/contrib/gis/db/backends/spatialite/operations.py
index 8003fcb6c6..47f3d4ca75 100644
--- a/django/contrib/gis/db/backends/spatialite/operations.py
+++ b/django/contrib/gis/db/backends/spatialite/operations.py
@@ -78,7 +78,7 @@ class SpatiaLiteOperations(BaseSpatialOperations, DatabaseOperations):
@cached_property
def unsupported_functions(self):
- unsupported = {"BoundingCircle", "GeometryDistance", "MemSize"}
+ unsupported = {"BoundingCircle", "GeometryDistance", "IsEmpty", "MemSize"}
if not self.geom_lib_version():
unsupported |= {"Azimuth", "GeoHash", "MakeValid"}
return unsupported
diff --git a/django/contrib/gis/db/models/functions.py b/django/contrib/gis/db/models/functions.py
index 5f6c7b5cfd..f97c540a1a 100644
--- a/django/contrib/gis/db/models/functions.py
+++ b/django/contrib/gis/db/models/functions.py
@@ -382,6 +382,12 @@ class Intersection(OracleToleranceMixin, GeomOutputGeoFunc):
@BaseSpatialField.register_lookup
+class IsEmpty(GeoFuncMixin, Transform):
+ lookup_name = "isempty"
+ output_field = BooleanField()
+
+
+@BaseSpatialField.register_lookup
class IsValid(OracleToleranceMixin, GeoFuncMixin, Transform):
lookup_name = "isvalid"
output_field = BooleanField()