diff --git a/web/migrations/versions/fdc58d9bd449_.py b/web/migrations/versions/fdc58d9bd449_.py index d95983cd..36c6819e 100644 --- a/web/migrations/versions/fdc58d9bd449_.py +++ b/web/migrations/versions/fdc58d9bd449_.py @@ -40,6 +40,8 @@ def upgrade(): if get_version() != -1: return + email, password = user_info() + op.create_table('version', sa.Column('name', sa.String(length=32), nullable=False), sa.Column('value', sa.Integer(), nullable=False), @@ -109,7 +111,6 @@ INSERT INTO "servergroup" VALUES(1, 1, 'Servers') """) - email, password = user_info() current_salt = getattr( config, 'SECURITY_PASSWORD_SALT', base64.urlsafe_b64encode( os.urandom(32) diff --git a/web/pgadmin/__init__.py b/web/pgadmin/__init__.py index 36dfee36..e119ac44 100644 --- a/web/pgadmin/__init__.py +++ b/web/pgadmin/__init__.py @@ -33,6 +33,7 @@ from pgadmin.utils.preferences import Preferences from pgadmin.utils.session import create_session_interface, pga_unauthorised from pgadmin.utils.versioned_template_loader import VersionedTemplateLoader from datetime import timedelta +from pgadmin.setup import get_version, set_version # If script is running under python3, it will not have the xrange function # defined @@ -304,11 +305,13 @@ def create_app(app_name=None): with app.app_context(): # Run migration for the first time i.e. create database from config import SQLITE_PATH - if not os.path.exists(SQLITE_PATH): + + # If version not available, user must have aborted. Tables are not + # created and so its an empty db + if not os.path.exists(SQLITE_PATH) or get_version() == -1: db_upgrade(app) else: - version = Version.query.filter_by(name='ConfigDB').first() - schema_version = version.value + schema_version = get_version() # Run migration if current schema version is greater than the # schema version stored in version table @@ -317,8 +320,7 @@ def create_app(app_name=None): # Update schema version to the latest if CURRENT_SCHEMA_VERSION > schema_version: - version = Version.query.filter_by(name='ConfigDB').first() - version.value = CURRENT_SCHEMA_VERSION + set_version(CURRENT_SCHEMA_VERSION) db.session.commit() Mail(app) diff --git a/web/pgadmin/setup/__init__.py b/web/pgadmin/setup/__init__.py index 4a39ea92..a423a613 100644 --- a/web/pgadmin/setup/__init__.py +++ b/web/pgadmin/setup/__init__.py @@ -8,6 +8,6 @@ ########################################################################## from .user_info import user_info -from .db_version import get_version +from .db_version import get_version, set_version from .db_upgrade import db_upgrade from .data_directory import create_app_data_directory diff --git a/web/pgadmin/setup/db_version.py b/web/pgadmin/setup/db_version.py index fa5068c7..438d4796 100644 --- a/web/pgadmin/setup/db_version.py +++ b/web/pgadmin/setup/db_version.py @@ -17,3 +17,8 @@ def get_version(): return -1 return version.value + + +def set_version(new_version): + version = Version.query.filter_by(name='ConfigDB').first() + version.value = new_version