Django

Code

Ticket #9858 (closed: fixed)

Opened 1 year ago

Last modified 1 year ago

Add POSTGIS_TEMPLATE setting for GIS Test Runner

Reported by: Aryeh Leib Taurog <vim@aryehleib.com> Assigned to: jbronn
Milestone: 1.1 Component: GIS
Version: 1.0 Keywords: test template_postgis create_spatial_db
Cc: vim@aryehleib.com, stryderjzw@gmail.com Triage Stage: Accepted
Has patch: 1 Needs documentation: 0
Needs tests: 0 Patch needs improvement: 0

Description

After setting up geodjango with PostgreSQL 8.3, PostGIS 1.3.3, and the win32 geodjango installer, an attempt to run the gis tests fails.

I am using the django 1.0.2 release (and geodjango code included therewith) under Python 2.5 on Win XP Pro

The source of the error seems to be that the addgeometrycolumn procedure does not exist in the test database.

from settings.py:

TEST_RUNNER         = 'django.contrib.gis.tests.run_gis_tests'
POSTGIS_SQL_PATH    = 'D:/generic/PostgreSQL/8.3/share/contrib'

from test output:

Installing custom SQL for geoapp.Country model
Failed to install custom SQL for geoapp.Country model: function addgeometrycolumn(unknown, unknown, integer, unknown, integer) does not exist
LINE 1: SELECT AddGeometryColumn('geoapp_country', 'mpoly', 4326, 'M...
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

complete log file attached.

The geodjango docs state that a spacial database is created using the template template_postgis. In tracing the error noted above, I discovered that the test database is created with no template. This seems to account for the missing procedure.

I patched source:django/tags/releases/1.0.2/django/contrib/gis/db/backend/postgis/creation.py with a modified _create_with_cursor, called by create_spatial_db, using a new setting to specify the template name. It seems to me that get_cmd_options should similarly be modified.

The tests are successful with my patch applied (log file attached)

I'm perplexed to find no mention of this anywhere. Is there something I'm missing? Does the gis test work for everyone else without using the template?

Attachments

failed_test.log (70.5 kB) - added by Aryeh Leib Taurog <vim@aryehleib.com> on 12/15/08 10:07:53.
successful_test.log (3.6 kB) - added by Aryeh Leib Taurog <vim@aryehleib.com> on 12/15/08 10:08:30.
creation_patch_for_gis_test (0.7 kB) - added by Aryeh Leib Taurog <vim@aryehleib.com> on 12/15/08 10:09:00.
pgadmin_modify_catalog.png (12.1 kB) - added by jbronn on 01/14/09 17:09:11.

Change History

12/15/08 10:07:53 changed by Aryeh Leib Taurog <vim@aryehleib.com>

  • attachment failed_test.log added.

12/15/08 10:08:30 changed by Aryeh Leib Taurog <vim@aryehleib.com>

  • attachment successful_test.log added.

12/15/08 10:09:00 changed by Aryeh Leib Taurog <vim@aryehleib.com>

  • attachment creation_patch_for_gis_test added.

12/15/08 12:14:54 changed by jbronn

  • owner changed from nobody to jbronn.
  • needs_better_patch changed.
  • stage changed from Unreviewed to Accepted.
  • needs_tests changed.
  • needs_docs changed.

I ran into the problem as well this weekend when I tested the updated GeoDjango installer (with 1.0.2) on Windows -- so it's a confirmed new issue (thanks for creating a ticket). I came up with a similar patch that just assumed the existence of a PostGIS template -- but I like the idea of the POSTGIS_TEMPLATE setting more, and it could reduce some of that crufty spatial db creation code from the PostGIS spatial backend.

I'm still wondering, however, why it ceased to work as it used to in my previous Windows VM.

01/02/09 14:39:36 changed by stryderjzw

  • cc changed from vim@aryehleib.com to vim@aryehleib.com, stryderjzw@gmail.com.

01/14/09 17:07:31 changed by jbronn

  • status changed from new to assigned.
  • summary changed from pg test database not created with postgis template, tests fail to Add POSTGIS_TEMPLATE setting for GIS Test Runner.
  • milestone set to post-1.0.

Alright, I think I've figured this one out. On Windows you have specify an extra permission for the database superuser to be able to import the PostGIS files this is "Can modify data objects." Attached is a screen shot from PGAdmin III that shows this permission checked in the create new role gui.

Regardless, I'm not gonna "wontfix" this, and I'm repurposing the ticket to add support for a POSTGIS_TEMPLATE setting.

01/14/09 17:09:11 changed by jbronn

  • attachment pgadmin_modify_catalog.png added.

02/01/09 00:07:43 changed by prairiedogg

Just FYI I ran into the "Can modify catalog directly" on a Ubuntu 8.04 machine, postgres 8.3, so it might not just be a windows thing.

02/01/09 12:22:58 changed by jbronn

  • status changed from assigned to closed.
  • resolution set to fixed.

(In [9803]) Fixed #9858 -- Added ability to use PostGIS template with GIS test runner via POSTGIS_TEMPLATE setting. Thanks to Aryeh Leib Taurog for feature suggestion and initial patch.

02/25/09 13:51:44 changed by

  • milestone deleted.

Milestone post-1.0 deleted

03/09/09 18:41:23 changed by jbronn

  • milestone set to 1.1.

Add/Change #9858 (Add POSTGIS_TEMPLATE setting for GIS Test Runner)




Change Properties
Action