From 46c7707e50400e237cbd774a31ad801669ca3905 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Tue, 19 Aug 2014 18:11:10 +0200 Subject: [PATCH] Replaced HAS_SPATIALREFSYS by a database feature --- django/contrib/gis/db/backends/base.py | 1 + django/contrib/gis/db/backends/mysql/base.py | 2 +- django/contrib/gis/tests/test_spatialrefsys.py | 13 +++++-------- django/contrib/gis/tests/utils.py | 2 -- django/test/testcases.py | 4 ++-- 5 files changed, 9 insertions(+), 13 deletions(-) diff --git a/django/contrib/gis/db/backends/base.py b/django/contrib/gis/db/backends/base.py index 663179e6e6..e281ba073e 100644 --- a/django/contrib/gis/db/backends/base.py +++ b/django/contrib/gis/db/backends/base.py @@ -11,6 +11,7 @@ from django.utils.encoding import python_2_unicode_compatible class BaseSpatialFeatures(object): gis_enabled = True + has_spatialrefsys_table = True class BaseSpatialOperations(object): diff --git a/django/contrib/gis/db/backends/mysql/base.py b/django/contrib/gis/db/backends/mysql/base.py index 38632f1401..077a8a1dc1 100644 --- a/django/contrib/gis/db/backends/mysql/base.py +++ b/django/contrib/gis/db/backends/mysql/base.py @@ -9,7 +9,7 @@ from django.contrib.gis.db.backends.mysql.operations import MySQLOperations class DatabaseFeatures(BaseSpatialFeatures, MySQLDatabaseFeatures): - pass + has_spatialrefsys_table = False class DatabaseWrapper(MySQLDatabaseWrapper): diff --git a/django/contrib/gis/tests/test_spatialrefsys.py b/django/contrib/gis/tests/test_spatialrefsys.py index 968942ec07..1209e940f0 100644 --- a/django/contrib/gis/tests/test_spatialrefsys.py +++ b/django/contrib/gis/tests/test_spatialrefsys.py @@ -1,9 +1,10 @@ import unittest from django.contrib.gis.gdal import HAS_GDAL -from django.contrib.gis.tests.utils import (no_mysql, oracle, postgis, - spatialite, HAS_SPATIALREFSYS, SpatialRefSys) +from django.contrib.gis.tests.utils import (oracle, postgis, spatialite, + SpatialRefSys) from django.db import connection +from django.test import skipUnlessDBFeature from django.utils import six @@ -34,11 +35,10 @@ test_srs = ({'srid': 4326, ) -@unittest.skipUnless(HAS_GDAL and HAS_SPATIALREFSYS, - "SpatialRefSysTest needs gdal support and a spatial database") +@unittest.skipUnless(HAS_GDAL, "SpatialRefSysTest needs gdal support") +@skipUnlessDBFeature("has_spatialrefsys_table") class SpatialRefSysTest(unittest.TestCase): - @no_mysql def test_retrieve(self): """ Test retrieval of SpatialRefSys model objects. @@ -61,7 +61,6 @@ class SpatialRefSysTest(unittest.TestCase): self.assertTrue(srs.wkt.startswith(sd['srtext'])) six.assertRegex(self, srs.proj4text, sd['proj4_re']) - @no_mysql def test_osr(self): """ Test getting OSR objects from SpatialRefSys model objects. @@ -85,7 +84,6 @@ class SpatialRefSysTest(unittest.TestCase): if not spatialite or connection.ops.spatial_version[0] >= 4: self.assertTrue(srs.wkt.startswith(sd['srtext'])) - @no_mysql def test_ellipsoid(self): """ Test the ellipsoid property. @@ -102,7 +100,6 @@ class SpatialRefSysTest(unittest.TestCase): for i in range(3): self.assertAlmostEqual(ellps1[i], ellps2[i], prec[i]) - @no_mysql def test_add_entry(self): """ Test adding a new entry in the SpatialRefSys model using the diff --git a/django/contrib/gis/tests/utils.py b/django/contrib/gis/tests/utils.py index 72dd669872..29e17e7113 100644 --- a/django/contrib/gis/tests/utils.py +++ b/django/contrib/gis/tests/utils.py @@ -39,7 +39,6 @@ postgis = _default_db == 'postgis' mysql = _default_db == 'mysql' spatialite = _default_db == 'spatialite' -HAS_SPATIALREFSYS = True if oracle and 'gis' in settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE']: from django.contrib.gis.db.backends.oracle.models import OracleSpatialRefSys as SpatialRefSys elif postgis: @@ -47,5 +46,4 @@ elif postgis: elif spatialite: from django.contrib.gis.db.backends.spatialite.models import SpatialiteSpatialRefSys as SpatialRefSys else: - HAS_SPATIALREFSYS = False SpatialRefSys = None diff --git a/django/test/testcases.py b/django/test/testcases.py index e982706784..260d7c8af7 100644 --- a/django/test/testcases.py +++ b/django/test/testcases.py @@ -980,7 +980,7 @@ def skipIfDBFeature(feature): """ Skip a test if a database has the named feature """ - return _deferredSkip(lambda: getattr(connection.features, feature), + return _deferredSkip(lambda: getattr(connection.features, feature, False), "Database has feature %s" % feature) @@ -988,7 +988,7 @@ def skipUnlessDBFeature(feature): """ Skip a test unless a database has the named feature """ - return _deferredSkip(lambda: not getattr(connection.features, feature), + return _deferredSkip(lambda: not getattr(connection.features, feature, False), "Database doesn't support feature %s" % feature)