pyalchemybiz/pyalchemybiz/websetup.py
Jan Dittberner b53e8c48df model cleanup
* add __repr__() to all current module objects (fixes #10)
 * pep8 fixes in all Python files (addresses #9)
 * create subdirectory for customer templates (addresses #2)


git-svn-id: file:///var/www/wwwusers/usr01/svn/pyalchemybiz/trunk@8 389c73d4-bf09-4d3d-a15e-f94a37d0667a
2008-10-05 22:32:59 +00:00

49 lines
1.6 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_config(command, filename, section, vars):
"""Place any commands to setup pyalchemybiz here"""
conf = appconfig('config:' + filename)
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.default.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.")