48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
"""Setup the pyalchemybiz application"""
|
|
import logging
|
|
|
|
from paste.deploy import appconfig
|
|
from pylons import config
|
|
|
|
from sqlalchemy.exceptions import NoSuchTableError
|
|
import sys
|
|
from migrate.versioning.api import db_version, version_control, upgrade
|
|
|
|
from pyalchemybiz.config.environment import load_environment
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
def setup_app(command, conf, vars):
|
|
"""Place any commands to setup pyalchemybiz here"""
|
|
load_environment(conf.global_conf, conf.local_conf)
|
|
|
|
repoversion = int(config.get('migrate.repo.version'))
|
|
repodir = config.get('migrate.repo.dir')
|
|
dburl = config.get('sqlalchemy.url')
|
|
|
|
# Populate the DB on 'paster setup-app'
|
|
|
|
log.info("Setting up database connectivity...")
|
|
log.info("Desired database repository version: %d" % repoversion)
|
|
log.info("Desired database repository directory: %s" % repodir)
|
|
|
|
try:
|
|
dbversion = int(db_version(dburl, repodir))
|
|
except NoSuchTableError:
|
|
version_control(dburl, repodir)
|
|
dbversion = int(db_version(dburl, repodir))
|
|
except Exception, e:
|
|
log.error(e)
|
|
raise e
|
|
log.info("detected db version %d" % dbversion)
|
|
if dbversion < repoversion:
|
|
upgrade(dburl, repodir, repoversion)
|
|
elif dbversion > repoversion:
|
|
log.error("The database at %s is already versioned and its version " +
|
|
"%d is greater than the required version %d",
|
|
dburl, dbversion, repoversion)
|
|
sys.exit(1)
|
|
|
|
log.info("Successfully set up.")
|