summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2016-05-31 11:31:51 -0400
committerTim Graham <timograham@gmail.com>2016-05-31 11:31:51 -0400
commit47f22e828618581ecd4203d369a939fdfcff3a8b (patch)
treecb333cad44548b7d28db6f35180442ee067104b0 /django
parent62e4f8ec435a4b600c8efb071201070a2443477e (diff)
Fixed #25645 -- Dropped support for SpatiaLite < 4.0.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/gis/db/backends/spatialite/introspection.py5
-rw-r--r--django/contrib/gis/db/backends/spatialite/models.py21
-rw-r--r--django/contrib/gis/db/backends/spatialite/operations.py13
3 files changed, 9 insertions, 30 deletions
diff --git a/django/contrib/gis/db/backends/spatialite/introspection.py b/django/contrib/gis/db/backends/spatialite/introspection.py
index 4222c04f8b..6847b28ff3 100644
--- a/django/contrib/gis/db/backends/spatialite/introspection.py
+++ b/django/contrib/gis/db/backends/spatialite/introspection.py
@@ -29,10 +29,9 @@ class SpatiaLiteIntrospection(DatabaseIntrospection):
cursor = self.connection.cursor()
try:
# Querying the `geometry_columns` table to get additional metadata.
- type_col = 'type' if self.connection.ops.spatial_version < (4, 0, 0) else 'geometry_type'
- cursor.execute('SELECT coord_dimension, srid, %s '
+ cursor.execute('SELECT coord_dimension, srid, geometry_type '
'FROM geometry_columns '
- 'WHERE f_table_name=%%s AND f_geometry_column=%%s' % type_col,
+ 'WHERE f_table_name=%s AND f_geometry_column=%s',
(table_name, geo_col))
row = cursor.fetchone()
if not row:
diff --git a/django/contrib/gis/db/backends/spatialite/models.py b/django/contrib/gis/db/backends/spatialite/models.py
index d1b58b7582..9f60add880 100644
--- a/django/contrib/gis/db/backends/spatialite/models.py
+++ b/django/contrib/gis/db/backends/spatialite/models.py
@@ -2,9 +2,7 @@
The GeometryColumns and SpatialRefSys models for the SpatiaLite backend.
"""
from django.contrib.gis.db.backends.base.models import SpatialRefSysMixin
-from django.contrib.gis.db.backends.spatialite.base import DatabaseWrapper
-from django.db import connection, models
-from django.db.backends.signals import connection_created
+from django.db import models
from django.utils.encoding import python_2_unicode_compatible
@@ -18,6 +16,7 @@ class SpatialiteGeometryColumns(models.Model):
coord_dimension = models.IntegerField()
srid = models.IntegerField(primary_key=True)
spatial_index_enabled = models.IntegerField()
+ type = models.IntegerField(db_column='geometry_type')
class Meta:
app_label = 'gis'
@@ -55,6 +54,7 @@ class SpatialiteSpatialRefSys(models.Model, SpatialRefSysMixin):
auth_srid = models.IntegerField()
ref_sys_name = models.CharField(max_length=256)
proj4text = models.CharField(max_length=2048)
+ srtext = models.CharField(max_length=2048)
@property
def wkt(self):
@@ -67,18 +67,3 @@ class SpatialiteSpatialRefSys(models.Model, SpatialRefSysMixin):
app_label = 'gis'
db_table = 'spatial_ref_sys'
managed = False
-
-
-def add_spatial_version_related_fields(sender, **kwargs):
- """
- Adds fields after establishing a database connection to prevent database
- operations at compile time.
- """
- if connection_created.disconnect(add_spatial_version_related_fields, sender=DatabaseWrapper):
- spatial_version = connection.ops.spatial_version[0]
- if spatial_version >= 4:
- SpatialiteSpatialRefSys.add_to_class('srtext', models.CharField(max_length=2048))
- SpatialiteGeometryColumns.add_to_class('type', models.IntegerField(db_column='geometry_type'))
- else:
- SpatialiteGeometryColumns.add_to_class('type', models.CharField(max_length=30))
-connection_created.connect(add_spatial_version_related_fields, sender=DatabaseWrapper)
diff --git a/django/contrib/gis/db/backends/spatialite/operations.py b/django/contrib/gis/db/backends/spatialite/operations.py
index f2f516109a..173b1ca590 100644
--- a/django/contrib/gis/db/backends/spatialite/operations.py
+++ b/django/contrib/gis/db/backends/spatialite/operations.py
@@ -1,6 +1,5 @@
"""
SQL functions reference lists:
-http://www.gaia-gis.it/spatialite-3.0.0-BETA/spatialite-sql-3.0.0.html
https://web.archive.org/web/20130407175746/http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.0.0.html
http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.2.1.html
"""
@@ -90,18 +89,14 @@ class SpatiaLiteOperations(BaseSpatialOperations, DatabaseOperations):
'Length': 'ST_Length',
'Reverse': 'ST_Reverse',
'Scale': 'ScaleCoords',
- 'Translate': 'ST_Translate' if self.spatial_version >= (3, 1, 0) else 'ShiftCoords',
+ 'Translate': 'ST_Translate',
'Union': 'ST_Union',
}
@cached_property
def unsupported_functions(self):
unsupported = {'BoundingCircle', 'ForceRHR', 'IsValid', 'MakeValid', 'MemSize'}
- if self.spatial_version < (3, 1, 0):
- unsupported.add('SnapToGrid')
- if self.spatial_version < (4, 0, 0):
- unsupported.update({'Perimeter', 'Reverse'})
- elif not self.lwgeom_version():
+ if not self.lwgeom_version():
unsupported.add('GeoHash')
return unsupported
@@ -116,8 +111,8 @@ class SpatiaLiteOperations(BaseSpatialOperations, DatabaseOperations):
'database (error was "%s"). Was the SpatiaLite initialization '
'SQL loaded on this database?') % (self.connection.settings_dict['NAME'], msg)
six.reraise(ImproperlyConfigured, ImproperlyConfigured(new_msg), sys.exc_info()[2])
- if version < (3, 0, 0):
- raise ImproperlyConfigured('GeoDjango only supports SpatiaLite versions 3.0.0 and above.')
+ if version < (4, 0, 0):
+ raise ImproperlyConfigured('GeoDjango only supports SpatiaLite versions 4.0.0 and above.')
return version
def convert_extent(self, box, srid):