Steve Piercy
2018-06-26 9ce49866130be6b697e7b5ea5e0f1bb35d3ba7bc
Add omitted files to basiclayout step
4 files added
127 ■■■■■ changed files
docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/env.py 58 ●●●●● patch | view | raw | blame | history
docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/script.py.mako 24 ●●●●● patch | view | raw | blame | history
docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/versions/README.txt 1 ●●●● patch | view | raw | blame | history
docs/tutorials/wiki2/src/basiclayout/tutorial/scripts/initialize_db.py 44 ●●●●● patch | view | raw | blame | history
docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/env.py
New file
@@ -0,0 +1,58 @@
"""Pyramid bootstrap environment. """
from alembic import context
from pyramid.paster import get_appsettings, setup_logging
from tutorial.models import get_engine
from tutorial.models.meta import Base
config = context.config
setup_logging(config.config_file_name)
settings = get_appsettings(config.config_file_name)
target_metadata = Base.metadata
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.
    """
    context.configure(url=settings['sqlalchemy.url'])
    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.
    """
    engine = get_engine(settings)
    connection = engine.connect()
    context.configure(
        connection=connection,
        target_metadata=target_metadata
    )
    try:
        with context.begin_transaction():
            context.run_migrations()
    finally:
        connection.close()
if context.is_offline_mode():
    run_migrations_offline()
else:
    run_migrations_online()
docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/script.py.mako
New file
@@ -0,0 +1,24 @@
"""${message}
Revision ID: ${up_revision}
Revises: ${down_revision | comma,n}
Create Date: ${create_date}
"""
from alembic import op
import sqlalchemy as sa
${imports if imports else ""}
# revision identifiers, used by Alembic.
revision = ${repr(up_revision)}
down_revision = ${repr(down_revision)}
branch_labels = ${repr(branch_labels)}
depends_on = ${repr(depends_on)}
def upgrade():
    ${upgrades if upgrades else "pass"}
def downgrade():
    ${downgrades if downgrades else "pass"}
docs/tutorials/wiki2/src/basiclayout/tutorial/alembic/versions/README.txt
New file
@@ -0,0 +1 @@
Placeholder for alembic versions
docs/tutorials/wiki2/src/basiclayout/tutorial/scripts/initialize_db.py
New file
@@ -0,0 +1,44 @@
import os
import sys
from pyramid.paster import bootstrap, setup_logging
from sqlalchemy.exc import OperationalError
from .. import models
def setup_models(dbsession):
    model = models.MyModel(name='one', value=1)
    dbsession.add(model)
def usage(argv):
    cmd = os.path.basename(argv[0])
    print('usage: %s <config_uri>\n'
          '(example: "%s development.ini")' % (cmd, cmd))
    sys.exit(1)
def main(argv=sys.argv):
    if len(argv) != 2:
        usage(argv)
    config_uri = argv[1]
    setup_logging(config_uri)
    env = bootstrap(config_uri)
    try:
        with env['request'].tm:
            dbsession = env['request'].dbsession
            setup_models(dbsession)
    except OperationalError:
        print('''
Pyramid is having a problem using your SQL database.  The problem
might be caused by one of the following things:
1.  You may need to initialize your database tables with `alembic`.
    Check your README.txt for description and try to run it.
2.  Your database server may not be running.  Check that the
    database server referred to by the "sqlalchemy.url" setting in
    your "development.ini" file is running.
            ''')