Factor download functionality out of export()
This way any kind of data can be offered as downloadable file.
Patch by: Sverre Rabbelier
""" 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 redef _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)