From 38da04a412f49f8ce0b72cd4c3a263d70f8162c4 Mon Sep 17 00:00:00 2001 From: Alexis Lahouze Date: Fri, 17 Jun 2016 09:52:08 +0200 Subject: [PATCH] Move migrations in application. --- migrations/README | 1 - migrations/alembic.ini | 45 ------ migrations/env.py | 73 --------- migrations/script.py.mako | 24 --- .../versions/1232daf66ac_add_user_support.py | 34 ----- ...44929e0f5f_improve_operation_scheduling.py | 142 ------------------ 6 files changed, 319 deletions(-) delete mode 100644 migrations/README delete mode 100644 migrations/alembic.ini delete mode 100644 migrations/env.py delete mode 100644 migrations/script.py.mako delete mode 100644 migrations/versions/1232daf66ac_add_user_support.py delete mode 100644 migrations/versions/144929e0f5f_improve_operation_scheduling.py diff --git a/migrations/README b/migrations/README deleted file mode 100644 index 98e4f9c..0000000 --- a/migrations/README +++ /dev/null @@ -1 +0,0 @@ -Generic single-database configuration. \ No newline at end of file diff --git a/migrations/alembic.ini b/migrations/alembic.ini deleted file mode 100644 index f8ed480..0000000 --- a/migrations/alembic.ini +++ /dev/null @@ -1,45 +0,0 @@ -# A generic, single database configuration. - -[alembic] -# template used to generate migration files -# file_template = %%(rev)s_%%(slug)s - -# set to 'true' to run the environment during -# the 'revision' command, regardless of autogenerate -# revision_environment = false - - -# Logging configuration -[loggers] -keys = root,sqlalchemy,alembic - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARN -handlers = console -qualname = - -[logger_sqlalchemy] -level = WARN -handlers = -qualname = sqlalchemy.engine - -[logger_alembic] -level = INFO -handlers = -qualname = alembic - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %H:%M:%S diff --git a/migrations/env.py b/migrations/env.py deleted file mode 100644 index 2ed594a..0000000 --- a/migrations/env.py +++ /dev/null @@ -1,73 +0,0 @@ -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 -from flask import current_app -config.set_main_option('sqlalchemy.url', current_app.config.get('SQLALCHEMY_DATABASE_URI')) -target_metadata = current_app.extensions['migrate'].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 = config.get_main_option("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 = engine_from_config( - config.get_section(config.config_ini_section), - prefix='sqlalchemy.', - poolclass=pool.NullPool) - - 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() - diff --git a/migrations/script.py.mako b/migrations/script.py.mako deleted file mode 100644 index 43c0940..0000000 --- a/migrations/script.py.mako +++ /dev/null @@ -1,24 +0,0 @@ -"""${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"} diff --git a/migrations/versions/1232daf66ac_add_user_support.py b/migrations/versions/1232daf66ac_add_user_support.py deleted file mode 100644 index bbc6bbb..0000000 --- a/migrations/versions/1232daf66ac_add_user_support.py +++ /dev/null @@ -1,34 +0,0 @@ -"""Add user support. - -Revision ID: 1232daf66ac -Revises: 144929e0f5f -Create Date: 2015-08-31 10:24:40.578432 - -""" - -# revision identifiers, used by Alembic. -revision = '1232daf66ac' -down_revision = '144929e0f5f' - -from alembic import op -import sqlalchemy as sa - - -def upgrade(): - ### commands auto generated by Alembic - please adjust! ### - op.create_table('user', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('email', sa.String(length=200), nullable=False), - sa.Column('password', sa.String(length=100), nullable=True), - sa.Column('active', sa.Boolean(), server_default=sa.text('true'), nullable=False), - sa.PrimaryKeyConstraint('id') - ) - op.create_index(op.f('ix_user_email'), 'user', ['email'], unique=True) - ### end Alembic commands ### - - -def downgrade(): - ### commands auto generated by Alembic - please adjust! ### - op.drop_index(op.f('ix_user_email'), table_name='user') - op.drop_table('user') - ### end Alembic commands ### diff --git a/migrations/versions/144929e0f5f_improve_operation_scheduling.py b/migrations/versions/144929e0f5f_improve_operation_scheduling.py deleted file mode 100644 index 0cdbc64..0000000 --- a/migrations/versions/144929e0f5f_improve_operation_scheduling.py +++ /dev/null @@ -1,142 +0,0 @@ -"""Improve operation scheduling. - -Revision ID: 144929e0f5f -Revises: None -Create Date: 2015-07-17 15:04:01.002581 - -""" - -# revision identifiers, used by Alembic. -revision = '144929e0f5f' -down_revision = None - -from alembic import op -import sqlalchemy as sa - -from accountant.api.models.scheduled_operations import ScheduledOperation - - -def upgrade(): - op.get_bind().execute("DROP VIEW operation") - op.rename_table('entry', 'operation') - - # Add column "canceled" in table "entry" - op.add_column( - 'operation', - sa.Column( - 'canceled', - sa.Boolean(), - nullable=False, - default=False, - server_default=sa.false() - ) - ) - - # Add column "confirmed" in table "entry" - op.add_column( - 'operation', - sa.Column( - 'confirmed', - sa.Boolean(), - nullable=False, - default=True, - server_default=sa.true() - ) - ) - - # Drop unused table canceled_operation. - op.drop_table('canceled_operation') - - op.get_bind().execute( - "alter sequence entry_id_seq rename to operation_id_seq" - ) - - connection = op.get_bind() - Session = sa.orm.sessionmaker() - session = Session(bind=connection) - - # Get all scheduled operations - scheduled_operations = ScheduledOperation.query(session).all() - - for scheduled_operation in scheduled_operations: - scheduled_operation.reschedule(session) - - -def downgrade(): - - op.create_table( - "canceled_operation", - sa.Column("id", sa.Integer, primary_key=True), - sa.Column( - "scheduled_operation_id", sa.Integer(), - sa.ForeignKey("scheduled_operation.id")), - sa.Column("operation_date", sa.Date, nullable=False) - ) - - op.drop_column('operation', 'canceled') - op.drop_column('operation', 'confirmed') - - op.get_bind().execute( - "alter sequence operation_id_seq rename to entry_id_seq" - ) - op.rename_table('operation', 'entry') - - op.get_bind().execute( - """ -CREATE VIEW operation AS -SELECT entry.id, - entry.operation_date, - entry.label, - entry.value, - entry.account_id, - entry.category, - entry.pointed, - entry.scheduled_operation_id, - false AS canceled -FROM entry -UNION -SELECT NULL::bigint AS id, - scheduled_operation.operation_date, - scheduled_operation.label, - scheduled_operation.value, - scheduled_operation.account_id, - scheduled_operation.category, - false AS pointed, - scheduled_operation.id AS scheduled_operation_id, - false AS canceled -FROM ( - SELECT scheduled_operation_1.id, - scheduled_operation_1.start_date, - scheduled_operation_1.stop_date, - scheduled_operation_1.day, - scheduled_operation_1.frequency, - scheduled_operation_1.label, - scheduled_operation_1.value, - scheduled_operation_1.account_id, - scheduled_operation_1.category, - generate_series(scheduled_operation_1.start_date::timestamp without time zone, scheduled_operation_1.stop_date::timestamp without time zone, scheduled_operation_1.frequency::double precision * '1 mon'::interval) AS operation_date - FROM scheduled_operation scheduled_operation_1) scheduled_operation - LEFT JOIN ( - SELECT entry.scheduled_operation_id, - date_trunc('MONTH'::text, entry.operation_date::timestamp with time zone) AS operation_date - FROM entry - UNION - SELECT canceled_operation.scheduled_operation_id, - date_trunc('MONTH'::text, canceled_operation.operation_date::timestamp with time zone) AS operation_date - FROM canceled_operation - ) saved_operation ON saved_operation.scheduled_operation_id = scheduled_operation.id AND saved_operation.operation_date = date_trunc('MONTH'::text, scheduled_operation.operation_date) -WHERE saved_operation.scheduled_operation_id IS NULL -UNION -SELECT NULL::bigint AS id, - canceled_operation.operation_date, - scheduled_operation.label, - scheduled_operation.value, - scheduled_operation.account_id, - scheduled_operation.category, - false AS pointed, - scheduled_operation.id AS scheduled_operation_id, - true AS canceled -FROM scheduled_operation -JOIN canceled_operation ON canceled_operation.scheduled_operation_id = scheduled_operation.id; - """ - )