1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Fixes #1576: Move PostgreSQL validation logic into the relevant migration

This commit is contained in:
Jeremy Stretch
2017-10-12 16:02:15 -04:00
parent 7f4d96f33e
commit b04ade8060
2 changed files with 22 additions and 19 deletions

View File

@ -1,11 +1,31 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Generated by Django 1.11.4 on 2017-09-26 21:25 # Generated by Django 1.11.4 on 2017-09-26 21:25
from __future__ import unicode_literals from __future__ import unicode_literals
from distutils.version import StrictVersion
from django.conf import settings from django.conf import settings
import django.contrib.postgres.fields.jsonb import django.contrib.postgres.fields.jsonb
from django.db import migrations, models from django.db import connection, migrations, models
import django.db.models.deletion import django.db.models.deletion
from django.db.utils import OperationalError
def verify_postgresql_version(apps, schema_editor):
"""
Verify that PostgreSQL is version 9.4 or higher.
"""
try:
with connection.cursor() as cursor:
cursor.execute("SELECT VERSION()")
row = cursor.fetchone()
pg_version = row[0].split()[1]
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.
except OperationalError:
pass
class Migration(migrations.Migration): class Migration(migrations.Migration):
@ -16,6 +36,7 @@ class Migration(migrations.Migration):
] ]
operations = [ operations = [
migrations.RunPython(verify_postgresql_version),
migrations.CreateModel( migrations.CreateModel(
name='ReportResult', name='ReportResult',
fields=[ fields=[

View File

@ -1,18 +0,0 @@
from distutils.version import StrictVersion
from django.db import connection
from django.db.utils import OperationalError
# NetBox v2.2 and later requires PostgreSQL 9.4 or higher.
try:
with connection.cursor() as cursor:
cursor.execute("SELECT VERSION()")
row = cursor.fetchone()
pg_version = row[0].split()[1]
if StrictVersion(pg_version) < StrictVersion('9.4.0'):
raise Exception("PostgreSQL 9.4.0 or higher is required. ({} found)".format(pg_version))
# Skip if the database is missing (e.g. for CI testing) or misconfigured.
except OperationalError:
pass