Author: jbronn
Date: 2011-09-09 17:29:34 -0700 (Fri, 09 Sep 2011)
New Revision: 16757

Modified:
   django/trunk/django/contrib/gis/db/backends/adapter.py
   django/trunk/django/contrib/gis/db/backends/postgis/adapter.py
   django/trunk/django/contrib/gis/tests/geoapp/test_regress.py
Log:
Fixed #13670 -- Comparisons with the spatial adapter won't blow up in some 
corner cases.  Thanks, milosu for the bug report and jpaulett for the patch.

Modified: django/trunk/django/contrib/gis/db/backends/adapter.py
===================================================================
--- django/trunk/django/contrib/gis/db/backends/adapter.py      2011-09-10 
00:05:48 UTC (rev 16756)
+++ django/trunk/django/contrib/gis/db/backends/adapter.py      2011-09-10 
00:29:34 UTC (rev 16757)
@@ -8,6 +8,8 @@
         self.srid = geom.srid
 
     def __eq__(self, other):
+        if not isinstance(other, WKTAdapter):
+            return False
         return self.wkt == other.wkt and self.srid == other.srid
 
     def __str__(self):

Modified: django/trunk/django/contrib/gis/db/backends/postgis/adapter.py
===================================================================
--- django/trunk/django/contrib/gis/db/backends/postgis/adapter.py      
2011-09-10 00:05:48 UTC (rev 16756)
+++ django/trunk/django/contrib/gis/db/backends/postgis/adapter.py      
2011-09-10 00:29:34 UTC (rev 16757)
@@ -21,6 +21,8 @@
             raise Exception('Error implementing psycopg2 protocol. Is psycopg2 
installed?')
 
     def __eq__(self, other):
+        if not isinstance(other, PostGISAdapter):
+            return False
         return (self.ewkb == other.ewkb) and (self.srid == other.srid)
 
     def __str__(self):

Modified: django/trunk/django/contrib/gis/tests/geoapp/test_regress.py
===================================================================
--- django/trunk/django/contrib/gis/tests/geoapp/test_regress.py        
2011-09-10 00:05:48 UTC (rev 16756)
+++ django/trunk/django/contrib/gis/tests/geoapp/test_regress.py        
2011-09-10 00:29:34 UTC (rev 16757)
@@ -2,7 +2,7 @@
 from django.contrib.gis.tests.utils import no_mysql, no_spatialite
 from django.contrib.gis.shortcuts import render_to_kmz
 from django.test import TestCase
-from models import City, PennsylvaniaCity
+from models import City, PennsylvaniaCity, State
 
 class GeoRegressionTests(TestCase):
 
@@ -43,3 +43,13 @@
         mansfield = PennsylvaniaCity.objects.create(name='Mansfield', 
county='Tioga', point='POINT(-77.071445 41.823881)',
                                                     founded=founded)
         self.assertEqual(founded, PennsylvaniaCity.objects.dates('founded', 
'day')[0])
+
+    def test05_empty_count(self):
+         "Testing that PostGISAdapter.__eq__ does check empty strings, see 
#13670"
+         # contrived example, but need a geo lookup paired with an id__in 
lookup
+         pueblo = City.objects.get(name='Pueblo')
+         state = State.objects.filter(poly__contains=pueblo.point)
+         cities_within_state = City.objects.filter(id__in=state)
+
+         # .count() should not throw TypeError in __eq__
+         self.assertEqual(cities_within_state.count(), 1)

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to