Stop errors on older Spatialite versions that miss some tables

This commit is contained in:
Andrew Godwin 2014-08-05 21:09:37 +10:00
parent 746f2a4bed
commit 5f6558f82f
1 changed files with 20 additions and 13 deletions

View File

@ -1,3 +1,4 @@
from django.db.utils import DatabaseError
from django.db.backends.sqlite3.schema import DatabaseSchemaEditor from django.db.backends.sqlite3.schema import DatabaseSchemaEditor
@ -78,12 +79,15 @@ class SpatialiteSchemaEditor(DatabaseSchemaEditor):
self.remove_geometry_metadata(model, field) self.remove_geometry_metadata(model, field)
# Make sure all geom stuff is gone # Make sure all geom stuff is gone
for geom_table in self.geometry_tables: for geom_table in self.geometry_tables:
try:
self.execute( self.execute(
self.sql_discard_geometry_columns % { self.sql_discard_geometry_columns % {
"geom_table": geom_table, "geom_table": geom_table,
"table": self.quote_name(model._meta.db_table), "table": self.quote_name(model._meta.db_table),
} }
) )
except DatabaseError:
pass
super(SpatialiteSchemaEditor, self).delete_model(model, **kwargs) super(SpatialiteSchemaEditor, self).delete_model(model, **kwargs)
def add_field(self, model, field): def add_field(self, model, field):
@ -112,6 +116,7 @@ class SpatialiteSchemaEditor(DatabaseSchemaEditor):
super(SpatialiteSchemaEditor, self).alter_db_table(model, old_db_table, new_db_table) super(SpatialiteSchemaEditor, self).alter_db_table(model, old_db_table, new_db_table)
# Repoint any straggler names # Repoint any straggler names
for geom_table in self.geometry_tables: for geom_table in self.geometry_tables:
try:
self.execute( self.execute(
self.sql_update_geometry_columns % { self.sql_update_geometry_columns % {
"geom_table": geom_table, "geom_table": geom_table,
@ -119,6 +124,8 @@ class SpatialiteSchemaEditor(DatabaseSchemaEditor):
"new_table": self.quote_name(new_db_table), "new_table": self.quote_name(new_db_table),
} }
) )
except DatabaseError:
pass
# Re-add geometry-ness and rename spatial index tables # Re-add geometry-ness and rename spatial index tables
for field in model._meta.local_fields: for field in model._meta.local_fields:
if isinstance(field, GeometryField): if isinstance(field, GeometryField):