mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Refs #24152 -- Removed deprecated GeoQuerySet aggregate methods.
Per deprecation timeline.
This commit is contained in:
@@ -4,10 +4,9 @@ from django.contrib.gis.db.models import F, Collect, Count, Extent, Union
|
||||
from django.contrib.gis.geometry.backend import Geometry
|
||||
from django.contrib.gis.geos import GEOSGeometry, MultiPoint, Point
|
||||
from django.db import connection
|
||||
from django.test import TestCase, ignore_warnings, skipUnlessDBFeature
|
||||
from django.test import TestCase, skipUnlessDBFeature
|
||||
from django.test.utils import override_settings
|
||||
from django.utils import timezone
|
||||
from django.utils.deprecation import RemovedInDjango110Warning
|
||||
|
||||
from ..utils import no_oracle
|
||||
from .models import (
|
||||
@@ -64,17 +63,16 @@ class RelatedGeoModelTest(TestCase):
|
||||
check_pnt(GEOSGeometry(wkt, srid), qs[0].location.point)
|
||||
|
||||
@skipUnlessDBFeature("supports_extent_aggr")
|
||||
@ignore_warnings(category=RemovedInDjango110Warning)
|
||||
def test_related_extent_aggregate(self):
|
||||
"Testing the `extent` GeoQuerySet aggregates on related geographic models."
|
||||
"Testing the `Extent` aggregate on related geographic models."
|
||||
# This combines the Extent and Union aggregates into one query
|
||||
aggs = City.objects.aggregate(Extent('location__point'))
|
||||
|
||||
# One for all locations, one that excludes New Mexico (Roswell).
|
||||
all_extent = (-104.528056, 29.763374, -79.460734, 40.18476)
|
||||
txpa_extent = (-97.516111, 29.763374, -79.460734, 40.18476)
|
||||
e1 = City.objects.extent(field_name='location__point')
|
||||
e2 = City.objects.exclude(state='NM').extent(field_name='location__point')
|
||||
e1 = City.objects.aggregate(Extent('location__point'))['location__point__extent']
|
||||
e2 = City.objects.exclude(state='NM').aggregate(Extent('location__point'))['location__point__extent']
|
||||
e3 = aggs['location__point__extent']
|
||||
|
||||
# The tolerance value is to four decimal places because of differences
|
||||
@@ -98,9 +96,8 @@ class RelatedGeoModelTest(TestCase):
|
||||
)
|
||||
|
||||
@skipUnlessDBFeature("has_unionagg_method")
|
||||
@ignore_warnings(category=RemovedInDjango110Warning)
|
||||
def test_related_union_aggregate(self):
|
||||
"Testing the `unionagg` GeoQuerySet aggregates on related geographic models."
|
||||
"Testing the `Union` aggregate on related geographic models."
|
||||
# This combines the Extent and Union aggregates into one query
|
||||
aggs = City.objects.aggregate(Union('location__point'))
|
||||
|
||||
@@ -114,14 +111,14 @@ class RelatedGeoModelTest(TestCase):
|
||||
|
||||
# The second union aggregate is for a union
|
||||
# query that includes limiting information in the WHERE clause (in other
|
||||
# words a `.filter()` precedes the call to `.unionagg()`).
|
||||
# words a `.filter()` precedes the call to `.aggregate(Union()`).
|
||||
ref_u1 = MultiPoint(p1, p2, p4, p5, p3, srid=4326)
|
||||
ref_u2 = MultiPoint(p2, p3, srid=4326)
|
||||
|
||||
u1 = City.objects.unionagg(field_name='location__point')
|
||||
u1 = City.objects.aggregate(Union('location__point'))['location__point__union']
|
||||
u2 = City.objects.exclude(
|
||||
name__in=('Roswell', 'Houston', 'Dallas', 'Fort Worth'),
|
||||
).unionagg(field_name='location__point')
|
||||
).aggregate(Union('location__point'))['location__point__union']
|
||||
u3 = aggs['location__point__union']
|
||||
self.assertEqual(type(u1), MultiPoint)
|
||||
self.assertEqual(type(u3), MultiPoint)
|
||||
@@ -291,11 +288,9 @@ class RelatedGeoModelTest(TestCase):
|
||||
self.assertIsNone(b.author)
|
||||
|
||||
@skipUnlessDBFeature("supports_collect_aggr")
|
||||
@ignore_warnings(category=RemovedInDjango110Warning)
|
||||
def test_collect(self):
|
||||
"""
|
||||
Testing the (deprecated) `collect` GeoQuerySet method and `Collect`
|
||||
aggregate.
|
||||
Testing the `Collect` aggregate.
|
||||
"""
|
||||
# Reference query:
|
||||
# SELECT AsText(ST_Collect("relatedapp_location"."point")) FROM "relatedapp_city" LEFT OUTER JOIN
|
||||
@@ -306,14 +301,11 @@ class RelatedGeoModelTest(TestCase):
|
||||
'-95.363151 29.763374,-96.801611 32.782057)'
|
||||
)
|
||||
|
||||
c1 = City.objects.filter(state='TX').collect(field_name='location__point')
|
||||
c2 = City.objects.filter(state='TX').aggregate(Collect('location__point'))['location__point__collect']
|
||||
|
||||
for coll in (c1, c2):
|
||||
# Even though Dallas and Ft. Worth share same point, Collect doesn't
|
||||
# consolidate -- that's why 4 points in MultiPoint.
|
||||
self.assertEqual(4, len(coll))
|
||||
self.assertTrue(ref_geom.equals(coll))
|
||||
coll = City.objects.filter(state='TX').aggregate(Collect('location__point'))['location__point__collect']
|
||||
# Even though Dallas and Ft. Worth share same point, Collect doesn't
|
||||
# consolidate -- that's why 4 points in MultiPoint.
|
||||
self.assertEqual(4, len(coll))
|
||||
self.assertTrue(ref_geom.equals(coll))
|
||||
|
||||
def test15_invalid_select_related(self):
|
||||
"Testing doing select_related on the related name manager of a unique FK. See #13934."
|
||||
|
||||
Reference in New Issue
Block a user