Refactor verify_postgresql_version to use Django connection pg_version method for comparing versions.

This commit is contained in:
txb5022 2018-11-20 16:39:06 -05:00
parent c7772e289f
commit 0935df4761

View File

@ -2,7 +2,6 @@
# Generated by Django 1.11.14 on 2018-07-31 02:19 # Generated by Django 1.11.14 on 2018-07-31 02:19
from __future__ import unicode_literals from __future__ import unicode_literals
import re
from distutils.version import StrictVersion from distutils.version import StrictVersion
from django.conf import settings from django.conf import settings
@ -12,7 +11,8 @@ import django.db.models.deletion
import extras.models import extras.models
from django.db.utils import OperationalError from django.db.utils import OperationalError
from extras.constants import CF_FILTER_DISABLED, CF_FILTER_EXACT, CF_FILTER_LOOSE, CF_TYPE_SELECT from extras.constants import (CF_FILTER_DISABLED, CF_FILTER_EXACT, CF_FILTER_LOOSE,
CF_TYPE_SELECT, DB_MINIMUM_VERSION)
def verify_postgresql_version(apps, schema_editor): def verify_postgresql_version(apps, schema_editor):
@ -20,12 +20,10 @@ def verify_postgresql_version(apps, schema_editor):
Verify that PostgreSQL is version 9.4 or higher. Verify that PostgreSQL is version 9.4 or higher.
""" """
try: try:
with connection.cursor() as cursor: pg_version = connection.pg_version
cursor.execute("SELECT VERSION()")
row = cursor.fetchone() if pg_version < DB_MINIMUM_VERSION:
pg_version = re.match(r'^PostgreSQL (\d+\.\d+(\.\d+)?)', row[0]).group(1) raise Exception("PostgreSQL 9.4.0 ({}) or higher is required ({} found). Upgrade PostgreSQL and then run migrations again.".format(DB_MINIMUM_VERSION, pg_version))
if StrictVersion(pg_version) < StrictVersion('9.4.0'):
raise Exception("PostgreSQL 9.4.0 or higher is required ({} found). Upgrade PostgreSQL and then run migrations again.".format(pg_version))
# Skip if the database is missing (e.g. for CI testing) or misconfigured. # Skip if the database is missing (e.g. for CI testing) or misconfigured.
except OperationalError: except OperationalError: