summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2015-04-24 18:16:40 +0200
committerClaude Paroz <claude@2xlibre.net>2015-04-24 20:30:23 +0200
commita37dcfd0a38cff24eb4fb5e3858791aa5428c853 (patch)
tree4892ae0e738035aa31701e3d26c5a4dba61bb8ec
parentb69515385279458b30a51ed73be28edc7407c1fa (diff)
Delayed GDAL check for OSMGeoAdmin
-rw-r--r--django/contrib/gis/admin/__init__.py15
-rw-r--r--django/contrib/gis/admin/options.py26
-rw-r--r--tests/gis_tests/geoadmin/models.py4
3 files changed, 20 insertions, 25 deletions
diff --git a/django/contrib/gis/admin/__init__.py b/django/contrib/gis/admin/__init__.py
index fdf7166306..e37226bc17 100644
--- a/django/contrib/gis/admin/__init__.py
+++ b/django/contrib/gis/admin/__init__.py
@@ -4,18 +4,5 @@ from django.contrib.admin import ( # NOQA: flake8 detects only the last __all__
HORIZONTAL, VERTICAL,
)
# Geographic admin options classes and widgets.
-from django.contrib.gis.admin.options import GeoModelAdmin # NOQA
+from django.contrib.gis.admin.options import GeoModelAdmin, OSMGeoAdmin # NOQA
from django.contrib.gis.admin.widgets import OpenLayersWidget # NOQA
-
-__all__ = [
- "autodiscover", "site", "AdminSite", "ModelAdmin", "StackedInline",
- "TabularInline", "HORIZONTAL", "VERTICAL",
- "GeoModelAdmin", "OpenLayersWidget", "HAS_OSM",
-]
-
-try:
- from django.contrib.gis.admin.options import OSMGeoAdmin
- HAS_OSM = True
- __all__ += ['OSMGeoAdmin']
-except ImportError:
- HAS_OSM = False
diff --git a/django/contrib/gis/admin/options.py b/django/contrib/gis/admin/options.py
index f9412336e3..dca46829fd 100644
--- a/django/contrib/gis/admin/options.py
+++ b/django/contrib/gis/admin/options.py
@@ -2,6 +2,9 @@ from django.contrib.admin import ModelAdmin
from django.contrib.gis.admin.widgets import OpenLayersWidget
from django.contrib.gis.db import models
from django.contrib.gis.gdal import HAS_GDAL, OGRGeomType
+from django.core.exceptions import ImproperlyConfigured
+
+spherical_mercator_srid = 3857
class GeoModelAdmin(ModelAdmin):
@@ -123,14 +126,17 @@ class GeoModelAdmin(ModelAdmin):
}
return OLMap
-if HAS_GDAL:
- spherical_mercator_srid = 3857
- class OSMGeoAdmin(GeoModelAdmin):
- map_template = 'gis/admin/osm.html'
- num_zoom = 20
- map_srid = spherical_mercator_srid
- max_extent = '-20037508,-20037508,20037508,20037508'
- max_resolution = '156543.0339'
- point_zoom = num_zoom - 6
- units = 'm'
+class OSMGeoAdmin(GeoModelAdmin):
+ map_template = 'gis/admin/osm.html'
+ num_zoom = 20
+ map_srid = spherical_mercator_srid
+ max_extent = '-20037508,-20037508,20037508,20037508'
+ max_resolution = '156543.0339'
+ point_zoom = num_zoom - 6
+ units = 'm'
+
+ def __init__(self, *args):
+ if not HAS_GDAL:
+ raise ImproperlyConfigured("OSMGeoAdmin is not usable without GDAL libs installed")
+ super(OSMGeoAdmin, self).__init__(*args)
diff --git a/tests/gis_tests/geoadmin/models.py b/tests/gis_tests/geoadmin/models.py
index b7d3b53c60..99dbae5d91 100644
--- a/tests/gis_tests/geoadmin/models.py
+++ b/tests/gis_tests/geoadmin/models.py
@@ -1,3 +1,4 @@
+from django.contrib.gis.gdal import HAS_GDAL
from django.utils.encoding import python_2_unicode_compatible
from ..admin import admin
@@ -19,4 +20,5 @@ class City(models.Model):
return self.name
site = admin.AdminSite(name='admin_gis')
-site.register(City, admin.OSMGeoAdmin)
+if HAS_GDAL:
+ site.register(City, admin.OSMGeoAdmin)