diff -r 6641e941ef1e -r ff1a9aa48cfd app/django/contrib/gis/db/backend/postgis/management.py --- /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\d)\.(?P\d)\.(?P\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)