Commit 5f6558f8 authored by Andrew Godwin's avatar Andrew Godwin
Browse files

Stop errors on older Spatialite versions that miss some tables

parent 746f2a4b
Loading
Loading
Loading
Loading
+20 −13
Original line number Diff line number Diff line
from django.db.utils import DatabaseError
from django.db.backends.sqlite3.schema import DatabaseSchemaEditor


@@ -78,12 +79,15 @@ class SpatialiteSchemaEditor(DatabaseSchemaEditor):
                self.remove_geometry_metadata(model, field)
        # Make sure all geom stuff is gone
        for geom_table in self.geometry_tables:
            try:
                self.execute(
                    self.sql_discard_geometry_columns % {
                        "geom_table": geom_table,
                        "table": self.quote_name(model._meta.db_table),
                    }
                )
            except DatabaseError:
                pass
        super(SpatialiteSchemaEditor, self).delete_model(model, **kwargs)

    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)
        # Repoint any straggler names
        for geom_table in self.geometry_tables:
            try:
                self.execute(
                    self.sql_update_geometry_columns % {
                        "geom_table": geom_table,
@@ -119,6 +124,8 @@ class SpatialiteSchemaEditor(DatabaseSchemaEditor):
                        "new_table": self.quote_name(new_db_table),
                    }
                )
            except DatabaseError:
                pass
        # Re-add geometry-ness and rename spatial index tables
        for field in model._meta.local_fields:
            if isinstance(field, GeometryField):