Author: jbronn
Date: 2011-09-10 10:19:05 -0700 (Sat, 10 Sep 2011)
New Revision: 16779

Modified:
   django/trunk/django/contrib/gis/utils/layermapping.py
   django/trunk/django/contrib/gis/utils/srs.py
Log:
Fixed #16537 -- Fixed multi-db issues with GeoDjango utilities.  Thanks, Shane 
Shifflett for the bug report and aaugustin for the initial patch.

Modified: django/trunk/django/contrib/gis/utils/layermapping.py
===================================================================
--- django/trunk/django/contrib/gis/utils/layermapping.py       2011-09-10 
17:09:23 UTC (rev 16778)
+++ django/trunk/django/contrib/gis/utils/layermapping.py       2011-09-10 
17:19:05 UTC (rev 16779)
@@ -132,9 +132,6 @@
         else:
             raise LayerMapError('Unrecognized transaction mode: %s' % 
transaction_mode)
 
-        if using is None:
-            pass
-
     #### Checking routines used during initialization ####
     def check_fid_range(self, fid_range):
         "This checks the `fid_range` keyword."
@@ -393,7 +390,7 @@
 
         # Attempting to retrieve and return the related model.
         try:
-            return rel_model.objects.get(**fk_kwargs)
+            return rel_model.objects.using(self.using).get(**fk_kwargs)
         except ObjectDoesNotExist:
             raise MissingForeignKey('No ForeignKey %s model found with keyword 
arguments: %s' % (rel_model.__name__, fk_kwargs))
 
@@ -429,7 +426,7 @@
         SpatialRefSys = self.spatial_backend.spatial_ref_sys()
         try:
             # Getting the target spatial reference system
-            target_srs = 
SpatialRefSys.objects.get(srid=self.geo_field.srid).srs
+            target_srs = 
SpatialRefSys.objects.using(self.using).get(srid=self.geo_field.srid).srs
 
             # Creating the CoordTransform object
             return CoordTransform(self.source_srs, target_srs)

Modified: django/trunk/django/contrib/gis/utils/srs.py
===================================================================
--- django/trunk/django/contrib/gis/utils/srs.py        2011-09-10 17:09:23 UTC 
(rev 16778)
+++ django/trunk/django/contrib/gis/utils/srs.py        2011-09-10 17:19:05 UTC 
(rev 16779)
@@ -1,8 +1,7 @@
 from django.contrib.gis.gdal import SpatialReference
-from django.db import connections, DEFAULT_DB_ALIAS
 
 def add_srs_entry(srs, auth_name='EPSG', auth_srid=None, ref_sys_name=None,
-                  database=DEFAULT_DB_ALIAS):
+                  database=None):
     """
     This function takes a GDAL SpatialReference system and adds its information
     to the `spatial_ref_sys` table of the spatial backend.  Doing this enables
@@ -33,7 +32,11 @@
       of `django.db.DEFAULT_DB_ALIAS` (at the time of this writing, it's value
       is 'default').
     """
+    from django.db import connections, DEFAULT_DB_ALIAS
+    if not database:
+        database = DEFAULT_DB_ALIAS
     connection = connections[database]
+
     if not hasattr(connection.ops, 'spatial_version'):
         raise Exception('The `add_srs_entry` utility only works '
                         'with spatial backends.')
@@ -69,9 +72,9 @@
     try:
         # Try getting via SRID only, because using all kwargs may
         # differ from exact wkt/proj in database.
-        sr = SpatialRefSys.objects.get(srid=srs.srid)
+        sr = SpatialRefSys.objects.using(database).get(srid=srs.srid)
     except SpatialRefSys.DoesNotExist:
-        sr = SpatialRefSys.objects.create(**kwargs)
+        sr = SpatialRefSys.objects.using(database).create(**kwargs)
 
 # Alias is for backwards-compatibility purposes.
 add_postgis_srs = add_srs_entry

-- 
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