From 87e5929cb1be7d8185cc6f4fd37a22f8847f675c Mon Sep 17 00:00:00 2001 From: blitzmann Date: Thu, 2 Jul 2015 19:35:53 -0400 Subject: [PATCH] DB migration is triggered by number of `upgrade` files found, rather than number in config.py. This allows us to remove the db version variable in config.py and not worry about it. --- config.py | 4 ---- eos/db/migration.py | 18 +++++++++++------- eos/db/migrations/upgrade8.py | 7 ++----- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/config.py b/config.py index 32c24962f..8254f2714 100644 --- a/config.py +++ b/config.py @@ -19,10 +19,6 @@ expansionName = "Carnyx" expansionVersion = "1.0" evemonMinVersion = "4081" -# Database version (int ONLY) -# Increment every time we need to flag for user database upgrade/modification -dbversion = 7 - pyfaPath = None savePath = None staticPath = None diff --git a/eos/db/migration.py b/eos/db/migration.py index 92224c34c..dcf08134c 100644 --- a/eos/db/migration.py +++ b/eos/db/migration.py @@ -1,32 +1,36 @@ import config import shutil import time +import os def getVersion(db): cursor = db.execute('PRAGMA user_version') return cursor.fetchone()[0] def update(saveddata_engine): - currversion = getVersion(saveddata_engine) + dbVersion = getVersion(saveddata_engine) - if currversion == config.dbversion: + files = os.listdir(os.path.join(os.path.dirname(__file__), "migrations")) + appVersion = len([f for f in files if f.startswith("upgrade")]) + + if dbVersion == appVersion: return - if currversion < config.dbversion: + if dbVersion < appVersion: # Automatically backup database toFile = "%s/saveddata_migration_%d-%d_%s.db"%( config.savePath, - currversion, - config.dbversion, + dbVersion, + appVersion, time.strftime("%Y%m%d_%H%M%S")) shutil.copyfile(config.saveDB, toFile) - for version in xrange(currversion, config.dbversion): + for version in xrange(dbVersion, appVersion): module = __import__('eos.db.migrations.upgrade%d'%(version+1), fromlist=True) upgrade = getattr(module, "upgrade", False) if upgrade: upgrade(saveddata_engine) # when all is said and done, set version to current - saveddata_engine.execute('PRAGMA user_version = %d'%config.dbversion) + saveddata_engine.execute('PRAGMA user_version = %d'%appVersion) diff --git a/eos/db/migrations/upgrade8.py b/eos/db/migrations/upgrade8.py index 6097c3799..9d2c04321 100644 --- a/eos/db/migrations/upgrade8.py +++ b/eos/db/migrations/upgrade8.py @@ -1,13 +1,10 @@ """ -Migration 4 +Migration 8 -- Converts modules based on Proteus Module Tiericide +- Converts modules based on Carnyx Module Tiericide Some modules have been unpublished (and unpublished module attributes are removed from database), which causes pyfa to crash. We therefore replace these modules with their new replacements - - Based on http://community.eveonline.com/news/patch-notes/patch-notes-for-proteus/ - and output of itemDiff.py """