add alembic to scaffold
This commit is contained in:
parent
cdfb81c54c
commit
005fca223f
7 changed files with 156 additions and 54 deletions
78
edbob/scaffolds/edbob/+package+/alembic/env.py_tmpl
Normal file
78
edbob/scaffolds/edbob/+package+/alembic/env.py_tmpl
Normal file
|
@ -0,0 +1,78 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
``{{package}}.alembic.env`` -- Alembic Environment Script
|
||||
"""
|
||||
|
||||
from __future__ import with_statement
|
||||
|
||||
from alembic import context
|
||||
|
||||
import edbob
|
||||
import edbob.db
|
||||
|
||||
|
||||
# this is the Alembic Config object, which provides
|
||||
# access to the values within the .ini file in use.
|
||||
config = context.config
|
||||
|
||||
# Initialize edbob with whichever config file alembic is using.
|
||||
edbob.init('{{package}}', config.config_file_name)
|
||||
|
||||
# add your model's MetaData object here
|
||||
# for 'autogenerate' support
|
||||
target_metadata = edbob.db.Base.metadata
|
||||
|
||||
# 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 = edbob.config.require('edbob.db', 'sqlalchemy.url')
|
||||
context.configure(url=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 = edbob.db.engine
|
||||
|
||||
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()
|
31
edbob/scaffolds/edbob/+package+/alembic/script.py.mako
Normal file
31
edbob/scaffolds/edbob/+package+/alembic/script.py.mako
Normal file
|
@ -0,0 +1,31 @@
|
|||
"""${message}
|
||||
|
||||
Revision ID: ${up_revision}
|
||||
Revises: ${down_revision}
|
||||
Create Date: ${create_date}
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = ${repr(up_revision)}
|
||||
down_revision = ${repr(down_revision)}
|
||||
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
${imports if imports else ""}
|
||||
|
||||
metadata = sa.MetaData()
|
||||
|
||||
active_extensions = sa.Table(
|
||||
'active_extensions', metadata,
|
||||
sa.Column('name', sa.String(50)),
|
||||
)
|
||||
|
||||
|
||||
def upgrade():
|
||||
${upgrades if upgrades else "pass"}
|
||||
|
||||
|
||||
def downgrade():
|
||||
${downgrades if downgrades else "pass"}
|
0
edbob/scaffolds/edbob/+package+/alembic/versions/.dummy
Normal file
0
edbob/scaffolds/edbob/+package+/alembic/versions/.dummy
Normal file
|
@ -19,6 +19,14 @@
|
|||
whatever = you like
|
||||
|
||||
|
||||
####################
|
||||
# edbob
|
||||
####################
|
||||
|
||||
[edbob]
|
||||
include_config = [r'%(here)s/production.ini']
|
||||
|
||||
|
||||
####################
|
||||
# Pyramid
|
||||
####################
|
||||
|
@ -29,8 +37,7 @@ use = egg:{{package}}
|
|||
pyramid.reload_templates = true
|
||||
pyramid.debug_all = true
|
||||
pyramid.default_locale_name = en
|
||||
pyramid.includes =
|
||||
pyramid_debugtoolbar
|
||||
pyramid.includes = pyramid_debugtoolbar
|
||||
|
||||
# Hack so edbob can find this file from within WSGI app.
|
||||
edbob.config = %(here)s/development.ini
|
||||
|
@ -41,14 +48,6 @@ host = 0.0.0.0
|
|||
port = 6543
|
||||
|
||||
|
||||
####################
|
||||
# edbob
|
||||
####################
|
||||
|
||||
[edbob]
|
||||
include_config = ['%(here)s/production.ini']
|
||||
|
||||
|
||||
####################
|
||||
# logging
|
||||
####################
|
||||
|
|
|
@ -13,6 +13,43 @@
|
|||
whatever = you like
|
||||
|
||||
|
||||
####################
|
||||
# edbob
|
||||
####################
|
||||
|
||||
[edbob]
|
||||
init = edbob.time, edbob.errors, edbob.db
|
||||
basic_logging = True
|
||||
configure_logging = True
|
||||
# shell.python = ipython
|
||||
|
||||
[edbob.db]
|
||||
sqlalchemy.url = postgresql://user:pass@localhost/{{package}}
|
||||
|
||||
[edbob.mail]
|
||||
smtp.server = localhost
|
||||
# smtp.username = user
|
||||
# smtp.password = pass
|
||||
sender.default = {{package}}@example.com
|
||||
subject.default = Message from {{project}}
|
||||
recipients.default = [
|
||||
'Joe Blow <owner@example.com>',
|
||||
'managers@example.com',
|
||||
'support@example.com',
|
||||
]
|
||||
|
||||
[edbob.time]
|
||||
zone.local = America/Chicago
|
||||
|
||||
|
||||
####################
|
||||
# alembic
|
||||
####################
|
||||
|
||||
[alembic]
|
||||
script_location = {{package}}:alembic
|
||||
|
||||
|
||||
####################
|
||||
# pyramid
|
||||
####################
|
||||
|
@ -33,49 +70,6 @@ host = 0.0.0.0
|
|||
port = 6543
|
||||
|
||||
|
||||
####################
|
||||
# alembic
|
||||
####################
|
||||
|
||||
[alembic]
|
||||
# path to migration scripts
|
||||
script_location = schema
|
||||
|
||||
# template used to generate migration files
|
||||
# file_template = %%(rev)s_%%(slug)s
|
||||
|
||||
sqlalchemy.url = postgresql://user:pass@localhost/{{package}}
|
||||
|
||||
|
||||
####################
|
||||
# edbob
|
||||
####################
|
||||
|
||||
[edbob]
|
||||
init = edbob.time, edbob.db
|
||||
basic_logging = True
|
||||
configure_logging = True
|
||||
# shell.python = ipython
|
||||
|
||||
[edbob.db]
|
||||
sqlalchemy.url = postgresql://user:pass@localhost/{{package}}
|
||||
|
||||
[edbob.mail]
|
||||
smtp.server = localhost
|
||||
# smtp.username = user
|
||||
# smtp.password = pass
|
||||
sender.default = {{package}}@example.com
|
||||
recipients.default = [
|
||||
'Joe Blow <owner@example.com>',
|
||||
'managers@example.com',
|
||||
'support@example.com',
|
||||
]
|
||||
subject.default = Message from {{project}}
|
||||
|
||||
[edbob.time]
|
||||
timezone = US/Central
|
||||
|
||||
|
||||
####################
|
||||
# logging
|
||||
####################
|
||||
|
|
|
@ -39,6 +39,7 @@ requires = [
|
|||
#
|
||||
# package # low high
|
||||
|
||||
'alembic', # 0.3.4
|
||||
'edbob[db,pyramid]', # 0.1a1.dev
|
||||
'psycopg2', # 2.4.4
|
||||
]
|
||||
|
|
1
setup.py
1
setup.py
|
@ -93,7 +93,6 @@ extras = {
|
|||
#
|
||||
# package # low high
|
||||
|
||||
# 'alembic', # 0.3.4
|
||||
'SQLAlchemy', # 0.7.6
|
||||
# 'Tempita', # 0.5.1
|
||||
],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue