Fixed #25865 -- Made OSMGeoAdmin require GDAL only if transformation is needed.

This commit is contained in:
Sergey Fedoseev 2015-12-04 15:37:39 +05:00 committed by Tim Graham
parent 4f0cd0fd16
commit 1f035e6283
3 changed files with 42 additions and 10 deletions

View file

@ -1,11 +1,15 @@
from __future__ import unicode_literals
from unittest import skipUnless
from django.contrib.gis import admin
from django.contrib.gis.gdal import HAS_GDAL
from django.contrib.gis.geos import Point
from django.test import TestCase, override_settings, skipUnlessDBFeature
from django.core.exceptions import ImproperlyConfigured
from django.test import TestCase, mock, override_settings, skipUnlessDBFeature
from .admin import UnmodifiableAdmin
from .models import City, site
from .models import City, CityMercator, site
@skipUnlessDBFeature("gis_enabled")
@ -52,6 +56,22 @@ class GeoAdminTest(TestCase):
""""http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic', format: 'image/jpeg'});""",
result)
@mock.patch('django.contrib.gis.admin.options.HAS_GDAL', False)
def test_no_gdal_admin_model_diffent_srid(self):
msg = (
'Map SRID is 3857 and SRID of `geoadmin.City.point` is 4326. '
'GDAL must be installed to perform the transformation.'
)
with self.assertRaisesMessage(ImproperlyConfigured, msg):
geoadmin = site._registry[City]
geoadmin.get_changelist_form(None)()
@mock.patch('django.contrib.gis.admin.options.HAS_GDAL', False)
def test_no_gdal_admin_model_same_srid(self):
geoadmin = site._registry[CityMercator]
geoadmin.get_changelist_form(None)()
@skipUnless(HAS_GDAL, "GDAL is required.")
def test_olwidget_has_changed(self):
"""
Check that changes are accurately noticed by OpenLayersWidget.