--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/django/contrib/gis/db/backend/postgis/management.py Tue Oct 14 16:00:59 2008 +0000
@@ -0,0 +1,54 @@
+"""
+ This utility module is for obtaining information about the PostGIS
+ installation.
+
+ See PostGIS docs at Ch. 6.2.1 for more information on these functions.
+"""
+import re
+
+def _get_postgis_func(func):
+ "Helper routine for calling PostGIS functions and returning their result."
+ from django.db import connection
+ cursor = connection.cursor()
+ cursor.execute('SELECT %s()' % func)
+ row = cursor.fetchone()
+ cursor.close()
+ return row[0]
+
+### PostGIS management functions ###
+def postgis_geos_version():
+ "Returns the version of the GEOS library used with PostGIS."
+ return _get_postgis_func('postgis_geos_version')
+
+def postgis_lib_version():
+ "Returns the version number of the PostGIS library used with PostgreSQL."
+ return _get_postgis_func('postgis_lib_version')
+
+def postgis_proj_version():
+ "Returns the version of the PROJ.4 library used with PostGIS."
+ return _get_postgis_func('postgis_proj_version')
+
+def postgis_version():
+ "Returns PostGIS version number and compile-time options."
+ return _get_postgis_func('postgis_version')
+
+def postgis_full_version():
+ "Returns PostGIS version number and compile-time options."
+ return _get_postgis_func('postgis_full_version')
+
+### Routines for parsing output of management functions. ###
+version_regex = re.compile('^(?P<major>\d)\.(?P<minor1>\d)\.(?P<minor2>\d+)')
+def postgis_version_tuple():
+ "Returns the PostGIS version as a tuple."
+
+ # Getting the PostGIS version
+ version = postgis_lib_version()
+ m = version_regex.match(version)
+ if m:
+ major = int(m.group('major'))
+ minor1 = int(m.group('minor1'))
+ minor2 = int(m.group('minor2'))
+ else:
+ raise Exception('Could not parse PostGIS version string: %s' % version)
+
+ return (version, major, minor1, minor2)