kopia lustrzana https://github.com/glidernet/ogn-python
Integrate Flask-Migrate
rodzic
df0f32dc30
commit
0638ff42e0
|
@ -1,71 +0,0 @@
|
|||
import os
|
||||
import importlib
|
||||
|
||||
from alembic import context
|
||||
from sqlalchemy import engine_from_config, pool
|
||||
from logging.config import fileConfig
|
||||
|
||||
|
||||
# Provides access to the values within the .ini file in use.
|
||||
alembic_config = context.config
|
||||
|
||||
# Interpret the config file for Python logging.
|
||||
# This line sets up loggers basically.
|
||||
fileConfig(alembic_config.config_file_name)
|
||||
|
||||
# Get database path from ogn config
|
||||
os.environ.setdefault('OGN_CONFIG_MODULE', 'config.default')
|
||||
ogn_config = importlib.import_module(os.environ['OGN_CONFIG_MODULE'])
|
||||
|
||||
alembic_config.set_main_option('sqlalchemy.url', ogn_config.SQLALCHEMY_DATABASE_URI)
|
||||
|
||||
# Import metadata for autogeneration of migrations
|
||||
from ogn.model import Base
|
||||
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.
|
||||
|
||||
"""
|
||||
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(
|
||||
alembic_config.get_section(alembic_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()
|
|
@ -1,27 +0,0 @@
|
|||
"""TakeoffLanding: add status, remove duration
|
||||
|
||||
Revision ID: 0c66dabb0be9
|
||||
Revises: 5717cf8e17c
|
||||
Create Date: 2016-10-31 17:54:24.170607
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '0c66dabb0be9'
|
||||
down_revision = '5717cf8e17c'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.add_column('aircraft_beacon', sa.Column('status', sa.SmallInteger))
|
||||
op.create_index('ix_aircraft_beacon_status', 'aircraft_beacon', ['status'])
|
||||
op.drop_column('logbook', 'duration')
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_column('aircraft_beacon', 'status')
|
||||
op.add_column('logbook', sa.Column('duration', sa.Interval))
|
|
@ -1,24 +0,0 @@
|
|||
"""receiver_device to receiver
|
||||
|
||||
Revision ID: 104107d119d
|
||||
Revises: 46bc73c49e0
|
||||
Create Date: 2015-11-16 20:07:19.569378
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '104107d119d'
|
||||
down_revision = '46bc73c49e0'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.rename_table('receiver_device', 'receiver')
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.rename_table('receiver', 'receiver_device')
|
|
@ -1,26 +0,0 @@
|
|||
"""remove unused fields from takeoff_landing
|
||||
|
||||
Revision ID: 163f6213d3f
|
||||
Revises: 258a3f6bbdc
|
||||
Create Date: 2016-06-03 20:05:20.749369
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '163f6213d3f'
|
||||
down_revision = '258a3f6bbdc'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.drop_column('takeoff_landing', 'altitude')
|
||||
op.drop_column('takeoff_landing', 'ground_speed')
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.add_column('takeoff_landing', sa.Column('altitude', sa.Integer))
|
||||
op.add_column('takeoff_landing', sa.Column('ground_speed', sa.Float))
|
|
@ -1,34 +0,0 @@
|
|||
"""remove unnecessary pre postgis columns
|
||||
|
||||
Revision ID: 2004ce1566c
|
||||
Revises: 277aca1b810
|
||||
Create Date: 2016-04-28 18:24:14.912833
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '2004ce1566c'
|
||||
down_revision = '277aca1b810'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
import geoalchemy2 as ga
|
||||
|
||||
|
||||
def upgrade():
|
||||
# POSTGIS is fast enough, so lets forget radius, theta and phi
|
||||
op.drop_column('aircraft_beacon', 'radius')
|
||||
op.drop_column('aircraft_beacon', 'theta')
|
||||
op.drop_column('aircraft_beacon', 'phi')
|
||||
|
||||
# ... and flight_state is not used
|
||||
op.drop_column('aircraft_beacon', 'flight_state')
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.add_column('aircraft_beacon', sa.Column('radius', sa.Float))
|
||||
op.add_column('aircraft_beacon', sa.Column('theta', sa.Float))
|
||||
op.add_column('aircraft_beacon', sa.Column('phi', sa.Float))
|
||||
op.add_column('aircraft_beacon', sa.Column('flight_state', sa.SmallInteger))
|
|
@ -1,28 +0,0 @@
|
|||
"""add aircraft_type to device
|
||||
|
||||
Revision ID: 258a3f6bbdc
|
||||
Revises: 7585491482
|
||||
Create Date: 2016-05-25 20:16:57.990249
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '258a3f6bbdc'
|
||||
down_revision = '7585491482'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.add_column('device', sa.Column('aircraft_type', sa.Integer))
|
||||
op.create_index('ix_device_aircraft_type', 'device', ['aircraft_type'])
|
||||
op.create_index('ix_aircraft_beacon_aircraft_type', 'aircraft_beacon', ['aircraft_type'])
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_index('ix_aircraft_beacon_aircraft_type', 'aircraft_beacon')
|
||||
op.drop_index('ix_device_aircraft_type', 'device')
|
||||
op.drop_column('device', 'aircraft_type')
|
|
@ -1,37 +0,0 @@
|
|||
"""Full receiver beacon info
|
||||
|
||||
Revision ID: 269ec1bcf99
|
||||
Revises: 2c7144443d8
|
||||
Create Date: 2016-01-19 22:22:50.275615
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '269ec1bcf99'
|
||||
down_revision = '2c7144443d8'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.add_column('receiver_beacon', sa.Column('cpu_load', sa.Float))
|
||||
op.add_column('receiver_beacon', sa.Column('cpu_temp', sa.Float))
|
||||
op.add_column('receiver_beacon', sa.Column('free_ram', sa.Float))
|
||||
op.add_column('receiver_beacon', sa.Column('total_ram', sa.Float))
|
||||
op.add_column('receiver_beacon', sa.Column('ntp_error', sa.Float))
|
||||
op.add_column('receiver_beacon', sa.Column('rt_crystal_correction', sa.Float))
|
||||
op.add_column('receiver_beacon', sa.Column('rec_input_noise', sa.Float))
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_column('receiver_beacon', 'cpu_load')
|
||||
op.drop_column('receiver_beacon', 'cpu_temp')
|
||||
op.drop_column('receiver_beacon', 'free_ram')
|
||||
op.drop_column('receiver_beacon', 'total_ram')
|
||||
op.drop_column('receiver_beacon', 'ntp_error')
|
||||
op.drop_column('receiver_beacon', 'rt_crystal_correction')
|
||||
op.drop_column('receiver_beacon', 'rec_input_noise')
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
"""Migrate to PostGIS
|
||||
|
||||
Revision ID: 277aca1b810
|
||||
Revises: 3a0765c9a2
|
||||
Create Date: 2016-04-23 08:01:49.059187
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '277aca1b810'
|
||||
down_revision = '3a0765c9a2'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
import geoalchemy2 as ga
|
||||
|
||||
UPGRADE_QUERY = """
|
||||
UPDATE {table_name}
|
||||
SET
|
||||
location = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);
|
||||
"""
|
||||
|
||||
DOWNGRADE_QUERY = """
|
||||
UPDATE {table_name}
|
||||
SET
|
||||
latitude = ST_Y(ST_TRANSFORM(location, 4326)),
|
||||
longitude = ST_X(ST_TRANSFORM(location, 4326));
|
||||
"""
|
||||
|
||||
def upgrade():
|
||||
op.execute("CREATE EXTENSION IF NOT EXISTS postgis;");
|
||||
op.add_column('airport', sa.Column('location', ga.Geometry('POINT', srid=4326)))
|
||||
op.execute(UPGRADE_QUERY.format(table_name='airport'))
|
||||
op.drop_column('airport', 'latitude')
|
||||
op.drop_column('airport', 'longitude')
|
||||
|
||||
op.add_column('aircraft_beacon', sa.Column('location', ga.Geometry('POINT', srid=4326)))
|
||||
op.execute(UPGRADE_QUERY.format(table_name='aircraft_beacon'))
|
||||
op.drop_column('aircraft_beacon', 'latitude')
|
||||
op.drop_column('aircraft_beacon', 'longitude')
|
||||
|
||||
op.add_column('receiver_beacon', sa.Column('location', ga.Geometry('POINT', srid=4326)))
|
||||
op.execute(UPGRADE_QUERY.format(table_name='receiver_beacon'))
|
||||
op.drop_column('receiver_beacon', 'latitude')
|
||||
op.drop_column('receiver_beacon', 'longitude')
|
||||
|
||||
op.add_column('receiver', sa.Column('location', ga.Geometry('POINT', srid=4326)))
|
||||
op.execute(UPGRADE_QUERY.format(table_name='receiver'))
|
||||
op.drop_column('receiver', 'latitude')
|
||||
op.drop_column('receiver', 'longitude')
|
||||
|
||||
op.add_column('takeoff_landing', sa.Column('location', ga.Geometry('POINT', srid=4326)))
|
||||
op.execute(UPGRADE_QUERY.format(table_name='takeoff_landing'))
|
||||
op.drop_column('takeoff_landing', 'latitude')
|
||||
op.drop_column('takeoff_landing', 'longitude')
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.add_column('airport', sa.Column('latitude', sa.FLOAT))
|
||||
op.add_column('airport', sa.Column('longitude', sa.FLOAT))
|
||||
op.execute(DOWNGRADE_QUERY.format(table_name='airport'))
|
||||
op.drop_column('airport', 'location')
|
||||
|
||||
op.add_column('aircraft_beacon', sa.Column('latitude', sa.FLOAT))
|
||||
op.add_column('aircraft_beacon', sa.Column('longitude', sa.FLOAT))
|
||||
op.execute(DOWNGRADE_QUERY.format(table_name='aircraft_beacon'))
|
||||
op.drop_column('aircraft_beacon', 'location')
|
||||
|
||||
op.add_column('receiver_beacon', sa.Column('latitude', sa.FLOAT))
|
||||
op.add_column('receiver_beacon', sa.Column('longitude', sa.FLOAT))
|
||||
op.execute(DOWNGRADE_QUERY.format(table_name='receiver_beacon'))
|
||||
op.drop_column('receiver_beacon', 'location')
|
||||
|
||||
op.add_column('receiver', sa.Column('latitude', sa.FLOAT))
|
||||
op.add_column('receiver', sa.Column('longitude', sa.FLOAT))
|
||||
op.execute(DOWNGRADE_QUERY.format(table_name='receiver'))
|
||||
op.drop_column('receiver', 'location')
|
||||
|
||||
op.add_column('takeoff_landing', sa.Column('latitude', sa.FLOAT))
|
||||
op.add_column('takeoff_landing', sa.Column('longitude', sa.FLOAT))
|
||||
op.execute(DOWNGRADE_QUERY.format(table_name='takeoff_landing'))
|
||||
op.drop_column('takeoff_landing', 'location')
|
||||
|
||||
op.execute("DROP EXTENSION postgis;");
|
|
@ -1,28 +0,0 @@
|
|||
"""logbook changes
|
||||
|
||||
Revision ID: 2c7144443d8
|
||||
Revises: 104107d119d
|
||||
Create Date: 2015-11-27 22:05:31.417449
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '2c7144443d8'
|
||||
down_revision = '104107d119d'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.alter_column('aircraft_beacon', 'real_id', new_column_name='real_address')
|
||||
op.add_column('aircraft_beacon', sa.Column('flight_state', sa.SmallInteger))
|
||||
op.create_index('ix_aircraft_beacon_flight_state', 'aircraft_beacon', ['flight_state'])
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.alter_column('aircraft_beacon', 'real_address', new_column_name='real_id')
|
||||
op.drop_column('aircraft_beacon', 'flight_state')
|
||||
op.drop_index('ix_aircraft_beacon_flight_state', 'aircraft_beacon')
|
|
@ -1,32 +0,0 @@
|
|||
"""hardware version hex to dec
|
||||
|
||||
Revision ID: 3a0765c9a2
|
||||
Revises: 269ec1bcf99
|
||||
Create Date: 2016-02-20 10:31:55.520815
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '3a0765c9a2'
|
||||
down_revision = '269ec1bcf99'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade():
|
||||
conn = op.get_bind()
|
||||
res = conn.execute("UPDATE aircraft_beacon "
|
||||
"SET hardware_version = "
|
||||
"16 * (hardware_version / 10) + (hardware_version % 10) "
|
||||
"WHERE hardware_version IS NOT NULL")
|
||||
|
||||
|
||||
def downgrade():
|
||||
conn = op.get_bind()
|
||||
res = conn.execute("UPDATE aircraft_beacon "
|
||||
"SET hardware_version = "
|
||||
"10 * (hardware_version / 16) + (hardware_version % 16) "
|
||||
"WHERE hardware_version IS NOT NULL")
|
|
@ -1,24 +0,0 @@
|
|||
"""flarm to device
|
||||
|
||||
Revision ID: 46bc73c49e0
|
||||
Revises:
|
||||
Create Date: 2015-11-16 19:44:37.934741
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '46bc73c49e0'
|
||||
down_revision = None
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.rename_table('flarm', 'device')
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.rename_table('device', 'flarm')
|
|
@ -1,83 +0,0 @@
|
|||
"""Create relations
|
||||
|
||||
Revision ID: 46d818bc09b
|
||||
Revises: 2004ce1566c
|
||||
Create Date: 2016-05-18 21:00:24.832298
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '46d818bc09b'
|
||||
down_revision = '2004ce1566c'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
import geoalchemy2 as ga
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.add_column('aircraft_beacon', sa.Column('device_id', sa.Integer))
|
||||
op.create_foreign_key("aircraft_beacon_device_id_fkey", "aircraft_beacon", "device", ["device_id"], ["id"], ondelete="SET NULL")
|
||||
op.create_index('ix_aircraft_beacon_device_id', 'aircraft_beacon', ['device_id'])
|
||||
|
||||
op.add_column('aircraft_beacon', sa.Column('receiver_id', sa.Integer))
|
||||
op.create_foreign_key("aircraft_beacon_receiver_id_fkey", "aircraft_beacon", "receiver", ["receiver_id"], ["id"], ondelete="SET NULL")
|
||||
op.create_index('ix_aircraft_beacon_receiver_id', 'aircraft_beacon', ['receiver_id'])
|
||||
|
||||
op.drop_index('ix_aircraft_beacon_address', 'aircraft_beacon')
|
||||
|
||||
op.add_column('receiver_beacon', sa.Column('receiver_id', sa.Integer))
|
||||
op.create_foreign_key("receiver_beacon_receiver_id_fkey", "receiver_beacon", "receiver", ["receiver_id"], ["id"], ondelete="SET NULL")
|
||||
op.create_index('ix_receiver_beacon_receiver_id', 'receiver_beacon', ['receiver_id'])
|
||||
|
||||
|
||||
op.add_column('takeoff_landing', sa.Column('airport_id', sa.Integer))
|
||||
op.create_foreign_key("takeoff_landing_airport_id_fkey", "takeoff_landing", "airport", ["airport_id"], ["id"], ondelete="SET NULL")
|
||||
op.create_index('ix_takeoff_landing_airport_id', 'takeoff_landing', ['airport_id'])
|
||||
|
||||
op.add_column('takeoff_landing', sa.Column('device_id', sa.Integer))
|
||||
op.create_foreign_key('takeoff_landing_device_id_fkey', 'takeoff_landing', 'device', ['device_id'], ['id'], ondelete="SET NULL")
|
||||
op.create_index('ix_takeoff_landing_device_id', 'takeoff_landing', ['device_id'])
|
||||
|
||||
op.drop_index('ix_takeoff_landing_address', 'takeoff_landing')
|
||||
op.drop_index('idx_takeoff_landing_location', 'takeoff_landing')
|
||||
op.drop_column('takeoff_landing', 'address')
|
||||
op.drop_column('takeoff_landing', 'name')
|
||||
op.drop_column('takeoff_landing', 'receiver_name')
|
||||
op.drop_column('takeoff_landing', 'location')
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_index('ix_aircraft_beacon_device_id', 'aircraft_beacon')
|
||||
op.drop_foreign_key("aircraft_beacon_device_id_fkey", "aircraft_beacon")
|
||||
op.drop_column('aircraft_beacon', 'device_id')
|
||||
|
||||
op.drop_index('ix_aircraft_beacon_receiver_id', 'aircraft_beacon')
|
||||
op.drop_foreign_key("aircraft_beacon_receiver_id_fkey", "aircraft_beacon")
|
||||
op.drop_column('aircraft_beacon', 'receiver_id')
|
||||
|
||||
op.create_index('ix_aircraft_beacon_address', sa.Column('address', sa.String))
|
||||
|
||||
|
||||
op.drop_index('ix_receiver_beacon_receiver_id', 'receiver_beacon')
|
||||
op.drop_foreign_key("ix_receiver_beacon_receiver_id", "receiver_beacon")
|
||||
op.drop_column('receiver_beacon', 'receiver_id')
|
||||
|
||||
|
||||
op.drop_index('ix_takeoff_landing_airport_id', 'takeoff_landing')
|
||||
op.drop_foreign_key("takeoff_landing_airport_id_fkey", "takeoff_landing")
|
||||
op.drop_column('takeoff_landing', 'airport_id')
|
||||
|
||||
op.drop_index('ix_takeoff_landing_device_id', 'takeoff_landing')
|
||||
op.drop_foreign_key("takeoff_landing_device_id_fkey", "takeoff_landing")
|
||||
op.drop_column('takeoff_landing', 'device_id')
|
||||
|
||||
op.add_column('takeoff_landing', sa.Column('name', sa.String))
|
||||
op.add_column('takeoff_landing', sa.Column('receiver_name', sa.String(9)))
|
||||
op.add_column('takeoff_landing', sa.Column('address', sa.String(6)))
|
||||
op.add_column('takeoff_landing', sa.Column('location', ga.Geometry('POINT', srid=4326)))
|
||||
op.create_index('ix_takeoff_landing_address', 'takeoff_landing', ['address'])
|
||||
op.create_index('idx_takeoff_landing_location', 'takeoff_landing', ['location'])
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
"""Added DeviceInfo
|
||||
|
||||
Revision ID: 4ebfb325db6
|
||||
Revises: 163f6213d3f
|
||||
Create Date: 2016-06-04 11:11:00.546524
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '4ebfb325db6'
|
||||
down_revision = '163f6213d3f'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.execute("CREATE TABLE device_info AS SELECT * FROM device;")
|
||||
op.create_index('ix_device_info_address', 'device_info', ['address'])
|
||||
op.drop_column('device_info', 'name')
|
||||
op.drop_column('device_info', 'airport')
|
||||
op.drop_column('device_info', 'frequency')
|
||||
|
||||
op.drop_column('device', 'address_origin')
|
||||
op.drop_column('device', 'name')
|
||||
op.drop_column('device', 'airport')
|
||||
op.drop_column('device', 'aircraft')
|
||||
op.drop_column('device', 'registration')
|
||||
op.drop_column('device', 'competition')
|
||||
op.drop_column('device', 'frequency')
|
||||
op.drop_column('device', 'tracked')
|
||||
op.drop_column('device', 'identified')
|
||||
|
||||
op.add_column('device', sa.Column('stealth', sa.Boolean))
|
||||
op.add_column('device', sa.Column('software_version', sa.Float))
|
||||
op.add_column('device', sa.Column('hardware_version', sa.SmallInteger))
|
||||
op.add_column('device', sa.Column('real_address', sa.String(6)))
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.add_column('device', sa.Column('address_origin', sa.SmallInteger))
|
||||
op.add_column('device', sa.Column('name', sa.Unicode))
|
||||
op.add_column('device', sa.Column('airport', sa.String))
|
||||
op.add_column('device', sa.Column('aircraft', sa.String))
|
||||
op.add_column('device', sa.Column('registration', sa.String(7)))
|
||||
op.add_column('device', sa.Column('competition', sa.String(3)))
|
||||
op.add_column('device', sa.Column('frequency', sa.String))
|
||||
op.add_column('device', sa.Column('tracked', sa.Boolean))
|
||||
op.add_column('device', sa.Column('identified', sa.Boolean))
|
||||
|
||||
op.create_index('ix_device_info_registration', 'device', ['registration'])
|
||||
|
||||
op.drop_column('device', 'stealth')
|
||||
op.drop_column('device', 'software_version')
|
||||
op.drop_column('device', 'hardware_version')
|
||||
op.drop_column('device', 'real_address')
|
||||
|
||||
# transfer from device_info to device costs too much...
|
||||
op.execute("DROP TABLE device_info;")
|
||||
pass
|
|
@ -1,48 +0,0 @@
|
|||
"""update protocol to v0.2.5
|
||||
|
||||
Revision ID: 5717cf8e17c
|
||||
Revises: 4ebfb325db6
|
||||
Create Date: 2016-10-17 19:16:38.632097
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '5717cf8e17c'
|
||||
down_revision = '4ebfb325db6'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.alter_column('aircraft_beacon', 'signal_strength', new_column_name='signal_quality')
|
||||
op.add_column('aircraft_beacon', sa.Column('signal_power', sa.Float))
|
||||
|
||||
op.add_column('receiver_beacon', sa.Column('senders_visible', sa.Integer))
|
||||
op.add_column('receiver_beacon', sa.Column('senders_total', sa.Integer))
|
||||
op.add_column('receiver_beacon', sa.Column('senders_signal', sa.Float))
|
||||
op.add_column('receiver_beacon', sa.Column('senders_messages', sa.Integer))
|
||||
op.add_column('receiver_beacon', sa.Column('good_senders_signal', sa.Float))
|
||||
op.add_column('receiver_beacon', sa.Column('good_senders', sa.Integer))
|
||||
op.add_column('receiver_beacon', sa.Column('good_and_bad_senders', sa.Integer))
|
||||
|
||||
op.add_column('receiver_beacon', sa.Column('voltage', sa.Float))
|
||||
op.add_column('receiver_beacon', sa.Column('amperage', sa.Float))
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.alter_column('aircraft_beacon', 'signal_quality', new_column_name='signal_strength')
|
||||
op.drop_column('aircraft_beacon', 'signal_power')
|
||||
|
||||
op.drop_column('receiver_beacon', 'senders_visible')
|
||||
op.drop_column('receiver_beacon', 'senders_total')
|
||||
op.drop_column('receiver_beacon', 'senders_signal')
|
||||
op.drop_column('receiver_beacon', 'senders_messages')
|
||||
op.drop_column('receiver_beacon', 'good_senders_signal')
|
||||
op.drop_column('receiver_beacon', 'good_senders')
|
||||
op.drop_column('receiver_beacon', 'good_and_bad_senders')
|
||||
|
||||
op.drop_column('receiver_beacon', 'voltage')
|
||||
op.drop_column('receiver_beacon', 'amperage')
|
|
@ -1,24 +0,0 @@
|
|||
"""correct airport scheme
|
||||
|
||||
Revision ID: 7585491482
|
||||
Revises: 46d818bc09b
|
||||
Create Date: 2016-05-21 20:19:24.865915
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '7585491482'
|
||||
down_revision = '46d818bc09b'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.execute('ALTER TABLE airport ALTER COLUMN code TYPE varchar(6)')
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.execute('ALTER TABLE airport ALTER COLUMN code TYPE varchar(5)')
|
|
@ -1,9 +1,13 @@
|
|||
# A single database configuration,
|
||||
# sqlalchemy.url defined in env.py
|
||||
# A generic, single database configuration.
|
||||
|
||||
[alembic]
|
||||
# path to migration scripts
|
||||
script_location = 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]
|
|
@ -0,0 +1,90 @@
|
|||
from __future__ import with_statement
|
||||
from alembic import context
|
||||
from sqlalchemy import engine_from_config, pool
|
||||
from logging.config import fileConfig
|
||||
import logging
|
||||
|
||||
# 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)
|
||||
logger = logging.getLogger('alembic.env')
|
||||
|
||||
# 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'].db.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.
|
||||
|
||||
"""
|
||||
|
||||
# this callback is used to prevent an auto-migration from being generated
|
||||
# when there are no changes to the schema
|
||||
# reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html
|
||||
def process_revision_directives(context, revision, directives):
|
||||
if getattr(config.cmd_opts, 'autogenerate', False):
|
||||
script = directives[0]
|
||||
if script.upgrade_ops.is_empty():
|
||||
directives[:] = []
|
||||
logger.info('No changes in schema detected.')
|
||||
|
||||
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,
|
||||
process_revision_directives=process_revision_directives,
|
||||
**current_app.extensions['migrate'].configure_args)
|
||||
|
||||
try:
|
||||
with context.begin_transaction():
|
||||
context.run_migrations()
|
||||
except Exception as exception:
|
||||
logger.error(exception)
|
||||
raise exception
|
||||
finally:
|
||||
connection.close()
|
||||
|
||||
if context.is_offline_mode():
|
||||
run_migrations_offline()
|
||||
else:
|
||||
run_migrations_online()
|
|
@ -5,6 +5,9 @@ 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)}
|
||||
|
@ -12,9 +15,6 @@ 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"}
|
|
@ -1,6 +1,7 @@
|
|||
from flask import Flask
|
||||
from flask_bootstrap import Bootstrap
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
from flask_migrate import Migrate
|
||||
from flask_caching import Cache
|
||||
from celery import Celery
|
||||
|
||||
|
@ -14,17 +15,10 @@ app = Flask(__name__)
|
|||
#app.config.from_object('config.default')
|
||||
app.config.from_envvar('OGN_CONFIG_MODULE')
|
||||
|
||||
# Bootstrap
|
||||
# Initialize other things
|
||||
bootstrap = Bootstrap(app)
|
||||
|
||||
# Sqlalchemy
|
||||
db = SQLAlchemy(app)
|
||||
|
||||
# Cache
|
||||
migrate = Migrate(app, db)
|
||||
cache = Cache(app)
|
||||
|
||||
# Celery
|
||||
celery = make_celery(app)
|
||||
|
||||
# Navigation
|
||||
nav.init_app(app)
|
||||
|
|
Ładowanie…
Reference in New Issue