pyalchemybiz/pyalchemybiz/websetup.py

48 lines
1.5 KiB
Python
Raw Permalink Normal View History

"""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.")