Skip to content

Commit

Permalink
Fixed #16537 -- Fixed multi-db issues with GeoDjango utilities. Thank…
Browse files Browse the repository at this point in the history
…s, Shane Shifflett for the bug report and aaugustin for the initial patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16779 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
jbronn committed Sep 10, 2011
1 parent 67dde2f commit 36120f4
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 9 deletions.
7 changes: 2 additions & 5 deletions django/contrib/gis/utils/layermapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,9 +132,6 @@ def __init__(self, model, data, mapping, layer=0,
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."
Expand Down Expand Up @@ -393,7 +390,7 @@ def verify_fk(self, feat, rel_model, rel_mapping):

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

Expand Down Expand Up @@ -429,7 +426,7 @@ def coord_transform(self):
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)
Expand Down
11 changes: 7 additions & 4 deletions django/contrib/gis/utils/srs.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -33,7 +32,11 @@ def add_srs_entry(srs, auth_name='EPSG', auth_srid=None, ref_sys_name=None,
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.')
Expand Down Expand Up @@ -69,9 +72,9 @@ def add_srs_entry(srs, auth_name='EPSG', auth_srid=None, ref_sys_name=None,
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

0 comments on commit 36120f4

Please sign in to comment.