Changeset - 7894a440e134
[Not reviewed]
default
0 3 2
Søren Løvborg - 9 years ago 2016-06-02 13:21:59
sorenl@unity3d.com
db: add Alembic "migration environment"

Add in kallithea/alembic an unmodified Alembic "migration environment",
as generated by 'alembic init':

Copyright (C) 2009-2016 by Michael Bayer.
Alembic is a trademark of Michael Bayer.

Also update LICENSE, MANIFEST and setup metadata.
5 files changed with 108 insertions and 0 deletions:
0 comments (0 inline, 0 general)
LICENSE.md
Show inline comments
 
@@ -22,6 +22,18 @@ Various third-party code under GPLv3-com
 
of Kallithea.
 

	
 

	
 
Alembic
 
-------
 

	
 
Kallithea incorporates an [Alembic](http://alembic.zzzcomputing.com/en/latest/)
 
"migration environment" in `kallithea/alembic`, portions of which is:
 

	
 
Copyright © 2009-2016 by Michael Bayer.
 
Alembic is a trademark of Michael Bayer.
 

	
 
and licensed under the MIT-permissive license, which is
 
[included in this distribution](MIT-Permissive-License.txt).
 

	
 

	
 
Bootstrap
 
---------
MANIFEST.in
Show inline comments
 
@@ -8,6 +8,7 @@ include           README.rst
 
include           development.ini
 
recursive-include docs *
 
recursive-include init.d *
 
recursive-include kallithea/alembic *
 
include           kallithea/bin/ldap_sync.conf
 
include           kallithea/bin/template.ini.mako
 
include           kallithea/config/deployment.ini_tmpl
kallithea/alembic/env.py
Show inline comments
 
new file 100644
 
from __future__ import with_statement
 
from alembic import context
 
from sqlalchemy import engine_from_config, pool
 
from logging.config import fileConfig
 

	
 
# this is the Alembic Config object, which provides
 
# access to the values within the .ini file in use.
 
config = context.config
 

	
 
# Interpret the config file for Python logging.
 
# This line sets up loggers basically.
 
fileConfig(config.config_file_name)
 

	
 
# add your model's MetaData object here
 
# for 'autogenerate' support
 
# from myapp import mymodel
 
# target_metadata = mymodel.Base.metadata
 
target_metadata = None
 

	
 
# other values from the config, defined by the needs of env.py,
 
# can be acquired:
 
# my_important_option = config.get_main_option("my_important_option")
 
# ... etc.
 

	
 

	
 
def run_migrations_offline():
 
    """Run migrations in 'offline' mode.
 

	
 
    This configures the context with just a URL
 
    and not an Engine, though an Engine is acceptable
 
    here as well.  By skipping the Engine creation
 
    we don't even need a DBAPI to be available.
 

	
 
    Calls to context.execute() here emit the given string to the
 
    script output.
 

	
 
    """
 
    url = config.get_main_option("sqlalchemy.url")
 
    context.configure(
 
        url=url, target_metadata=target_metadata, literal_binds=True)
 

	
 
    with context.begin_transaction():
 
        context.run_migrations()
 

	
 

	
 
def run_migrations_online():
 
    """Run migrations in 'online' mode.
 

	
 
    In this scenario we need to create an Engine
 
    and associate a connection with the context.
 

	
 
    """
 
    connectable = engine_from_config(
 
        config.get_section(config.config_ini_section),
 
        prefix='sqlalchemy.',
 
        poolclass=pool.NullPool)
 

	
 
    with connectable.connect() as connection:
 
        context.configure(
 
            connection=connection,
 
            target_metadata=target_metadata
 
        )
 

	
 
        with context.begin_transaction():
 
            context.run_migrations()
 

	
 
if context.is_offline_mode():
 
    run_migrations_offline()
 
else:
 
    run_migrations_online()
kallithea/alembic/script.py.mako
Show inline comments
 
new file 100644
 
"""${message}
 

	
 
Revision ID: ${up_revision}
 
Revises: ${down_revision | comma,n}
 
Create Date: ${create_date}
 

	
 
"""
 

	
 
# revision identifiers, used by Alembic.
 
revision = ${repr(up_revision)}
 
down_revision = ${repr(down_revision)}
 
branch_labels = ${repr(branch_labels)}
 
depends_on = ${repr(depends_on)}
 

	
 
from alembic import op
 
import sqlalchemy as sa
 
${imports if imports else ""}
 

	
 
def upgrade():
 
    ${upgrades if upgrades else "pass"}
 

	
 

	
 
def downgrade():
 
    ${downgrades if downgrades else "pass"}
setup.py
Show inline comments
 
@@ -35,6 +35,7 @@ __platform__ = platform.system()
 
is_windows = __platform__ in ['Windows']
 

	
 
requirements = [
 
    "alembic>=0.8.0,<0.9",
 
    "waitress==0.8.8",
 
    "webob>=1.0.8,<=1.1.1",
 
    "webtest==1.4.3",
0 comments (0 inline, 0 general)