diff -r 8d941af65caf -r 77b6da96e6f1 web/lib/django/contrib/gis/management/commands/inspectdb.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/django/contrib/gis/management/commands/inspectdb.py Wed Jun 02 18:57:35 2010 +0200 @@ -0,0 +1,32 @@ +from optparse import make_option + +from django.core.management.base import CommandError +from django.core.management.commands.inspectdb import Command as InspectDBCommand + +class Command(InspectDBCommand): + db_module = 'django.contrib.gis.db' + gis_tables = {} + + def get_field_type(self, connection, table_name, row): + field_type, field_params, field_notes = super(Command, self).get_field_type(connection, table_name, row) + if field_type == 'GeometryField': + geo_col = row[0] + # Getting a more specific field type and any additional parameters + # from the `get_geometry_type` routine for the spatial backend. + field_type, geo_params = connection.introspection.get_geometry_type(table_name, geo_col) + field_params.update(geo_params) + # Adding the table name and column to the `gis_tables` dictionary, this + # allows us to track which tables need a GeoManager. + if table_name in self.gis_tables: + self.gis_tables[table_name].append(geo_col) + else: + self.gis_tables[table_name] = [geo_col] + return field_type, field_params, field_notes + + def get_meta(self, table_name): + meta_lines = super(Command, self).get_meta(table_name) + if table_name in self.gis_tables: + # If the table is a geographic one, then we need make + # GeoManager the default manager for the model. + meta_lines.insert(0, ' objects = models.GeoManager()') + return meta_lines