• en
  • Language: fr

Test des applications GeoDjango

Dans cette documentation, vous trouverez des notes et des réglages supplémentaires pour les utilisateurs de PostGIS et SpatiaLite.

PostGIS

Réglages

Note

Les réglages ci-dessous ont des valeurs par défaut raisonnables et n’ont généralement pas besoin d’être définis manuellement.

POSTGIS_TEMPLATE

Ce réglage peut être utilisé pour personnaliser le nom du modèle de base de données PostGIS à utiliser. Sa valeur par défaut est 'template_postgis' (le même nom qui est utilisé dans la documentation d’installation).

POSTGIS_VERSION

Lorsque le moteur spatial de GeoDjango s’initialise avec PostGIS, il doit effectuer une requête SQL pour déterminer la version pour savoir quels sont les fonctionnalités disponibles. Les utilisateurs avancés souhaitant éviter cette requête supplémentaire peuvent définir la version de façon manuelle par un tuple à 3 éléments de nombres entiers indiquant les numéros de version majeur, mineur et micro de PostGIS. Par exemple, pour indiquer que la version de PostGIS est X.Y.Z, il faut écrire :

POSTGIS_VERSION = (X, Y, Z)

Obtention des privilèges nécessaires

En fonction de votre configuration, cette section décrit plusieurs méthodes pour configurer un utilisateur de base de données disposant de suffisamment de privilèges pour exécuter les tests pour des applications GeoDjango avec PostgreSQL. Si votre modèle de base de données spatiale a été créé en suivant les instructions, il suffit que l’utilisateur de la base de données de test ait les droits de créer des bases de données. Dans d’autres configurations, il se peut qu’il soit nécessaire d’utiliser un superutilisateur de base de données.

Création d’un utilisateur de base de données

Pour créer un utilisateur de base de données ayant le droit de créer des bases de données, utilisez la commande suivante :

$ createuser --createdb -R -S <user_name>

Les drapeaux -R -S indiquent respectivement que nous ne voulons pas que l’utilisateur puisse créer d’autres utilisateurs (ou rôles), ni qu’il soit un superutilisateur.

Une autre possibilité est de modifier le rôle d’un utilisateur existant à partir du shell SQL (en supposant que cela se fasse à partir d’un compte superutilisateur) :

postgres# ALTER ROLE <user_name> CREATEDB NOSUPERUSER NOCREATEROLE;

Création d’un superutilisateur de base de données

Cela peut se faire au moment de la création de l’utilisateur, par exemple :

$ createuser --superuser <user_name>

Ou vous pouvez modifier le rôle de l’utilisateur à partir du shell SQL (en supposant que cela se fasse à partir d’un compte superutilisateur existant) :

postgres# ALTER ROLE <user_name> SUPERUSER;

Création d’une base de données avec PostGIS version 2

Lors des tests de projets utilisant PostGIS 2, la base de données de test est créée en faisant appel à l’instruction CREATE EXTENSION postgis, pour autant qu’aucun modèle template_postgis (ou nommé selon le réglage POSTGIS_TEMPLATE) n’existe dans la base de données actuelle.

Windows

Avec Windows, l’utilitaire pgAdmin III peut aussi être utilisé comme moyen simple pour ajouter des privilèges de superutilisateur à un utilisateur de base de données.

Par défaut, l’installeur PostGIS sous Windows inclut un modèle de base de données spatiale nommé template_postgis.

SpatiaLite

Vérifiez que les tables spatiales nécessaires sont créées dans la base de données de test, comme décrit dans Création d’une base de données spatiale pour SpatiaLite. Puis, il suffit de faire :

$ python manage.py test

Tests de GeoDjango

Pour que les tests de GeoDjango soient exécutés lors du lancement de la suite de tests de Django avec runtests.py, toutes les bases de données définies dans le fichier de réglages doivent utiliser l’un des moteurs de base de données spatiale.

Exemple

L’exemple suivant montre un fichier de réglages minimal définissant des moteurs spatiaux pouvant être utilisé pour exécuter la suite de tests complète de Django, y compris ceux situés dans django.contrib.gis:

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'geodjango',
        'USER': 'geodjango',
    },
   'other': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'other',
        'USER': 'geodjango',
   }
}

SECRET_KEY = 'django_tests_secret_key'

En supposant que les réglages ci-dessus se trouvent dans un fichier postgis.py dans le même répertoire que runtests.py, tous les tests de Django et GeoDjango seront effectués lors de l’exécution de la commande :

$ ./runtests.py --settings=postgis

Pour ne lancer que la suite de tests de GeoDjango, indiquez gis_tests:

$ ./runtests.py --settings=postgis gis_tests
Back to Top