Initial commit

This commit is contained in:
Marcus Lindvall 2017-10-18 16:35:10 +02:00
commit 351d98c523
36 changed files with 1836 additions and 0 deletions

1
migrations/README Normal file
View file

@ -0,0 +1 @@
Generic single-database configuration.

70
migrations/env.py Normal file
View file

@ -0,0 +1,70 @@
from __future__ import with_statement
from alembic import context
from sqlalchemy import engine_from_config, pool
from logging.config import dictConfig
import yaml
from pyjeeves.models.jvsmodels import Base
# Read the config file
with open("config.yml", 'r') as ymlfile:
cfg = yaml.load(ymlfile)
# Interpret the config file for Python logging.
# This line sets up loggers basically.
dictConfig(cfg.get('logging'))
# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
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 = cfg.get('alembic', {}).get("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(
cfg.get('alembic', {}),
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()

24
migrations/script.py.mako Normal file
View 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"}

View file

@ -0,0 +1,145 @@
"""Initial creation of DB
Revision ID: 18b08d122636
Revises:
Create Date: 2017-10-17 11:06:14.745786
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '18b08d122636'
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
op.create_table(
'jvs_articles',
sa.Column('ArtNr', sa.String(length=16), nullable=False),
sa.Column('ForetagKod', sa.SmallInteger(), nullable=False),
sa.Column('ArtBeskr', sa.String(length=128), nullable=True),
sa.Column('ArtBeskr2', sa.String(length=256), nullable=True),
sa.Column('ArtBeskrSpec', sa.String(length=128), nullable=True),
sa.Column('ArtProdKonto', sa.String(length=8), nullable=True),
sa.Column('ArtProdKontoBeskr', sa.String(length=64), nullable=True),
sa.Column('VaruGruppKod', sa.String(length=8), nullable=True),
sa.Column('VaruGruppBeskr', sa.String(length=64), nullable=True),
sa.Column('ArtProdKlass', sa.String(length=8), nullable=True),
sa.Column('ArtProdklBeskr', sa.String(length=64), nullable=True),
sa.Column('ArtKod', sa.SmallInteger(), nullable=True),
sa.Column('ArtTypBeskr', sa.String(length=64), nullable=True),
sa.Column('LagTyp', sa.SmallInteger(), nullable=True),
sa.Column('EnhetsKod', sa.String(length=8), nullable=True),
sa.Column('LevNr', sa.String(length=16), nullable=True),
sa.Column('ItemStatusCode', sa.Integer(), nullable=True),
sa.Column('LagSaldoArtikel', sa.Numeric(precision=15, scale=6), nullable=True),
sa.Column('RowCreatedDt', sa.DateTime(), nullable=True),
sa.Column('RowCreatedBy', sa.String(length=16), nullable=True),
sa.Column('RowUpdatedDt', sa.DateTime(), nullable=True),
sa.Column('RowUpdatedBy', sa.String(length=16), nullable=True),
sa.PrimaryKeyConstraint('ArtNr', 'ForetagKod', name='articles_primary_key')
)
op.create_table(
'jvs_customers',
sa.Column('FtgNr', sa.String(length=16), nullable=False),
sa.Column('ForetagKod', sa.SmallInteger(), nullable=False),
sa.Column('BetKod', sa.String(length=8), nullable=True),
sa.Column('kundbetalarenr', sa.String(length=16), nullable=True),
sa.Column('RowCreatedDt', sa.DateTime(), nullable=True),
sa.Column('RowCreatedBy', sa.String(length=16), nullable=True),
sa.Column('RowUpdatedDt', sa.DateTime(), nullable=True),
sa.Column('RowUpdatedBy', sa.String(length=16), nullable=True),
sa.Column('Saljare', sa.String(length=32), nullable=True),
sa.Column('SaljareNamn', sa.String(length=64), nullable=True),
sa.Column('KundKategoriKod', sa.SmallInteger(), nullable=True),
sa.Column('KundKatBeskr', sa.String(length=64), nullable=True),
sa.Column('OrgNr', sa.String(length=32), nullable=True),
sa.Column('FtgNamn', sa.String(length=64), nullable=True),
sa.Column('FtgPostAdr1', sa.String(length=64), nullable=True),
sa.Column('FtgPostAdr2', sa.String(length=64), nullable=True),
sa.Column('FtgPostAdr3', sa.String(length=64), nullable=True),
sa.Column('FtgPostadr4', sa.String(length=64), nullable=True),
sa.Column('FtgPostadr5', sa.String(length=128), nullable=True),
sa.Column('FtgPostnr', sa.String(length=16), nullable=True),
sa.Column('LandsKod', sa.String(length=16), nullable=True),
sa.Column('FtgPostLevAdr3', sa.String(length=64), nullable=True),
sa.Column('FtgLevPostNr', sa.String(length=16), nullable=True),
sa.PrimaryKeyConstraint('FtgNr', 'ForetagKod', name='customers_primary_key')
)
op.create_table(
'jvs_invoice_rows',
sa.Column('FaktNr', sa.BigInteger(), nullable=False),
sa.Column('FaktRadnr', sa.Integer(), nullable=False),
sa.Column('ForetagKod', sa.SmallInteger(), nullable=False),
sa.Column('FtgNr', sa.String(length=16), nullable=True),
sa.Column('OrderNr', sa.BigInteger(), nullable=True),
sa.Column('OrdTyp', sa.SmallInteger(), nullable=True),
sa.Column('Saljare', sa.String(length=16), nullable=True),
sa.Column('KundKategoriKod', sa.SmallInteger(), nullable=True),
sa.Column('ArtNr', sa.String(length=16), nullable=True),
sa.Column('EnhetsKod', sa.String(length=8), nullable=True),
sa.Column('VaruGruppKod', sa.String(length=8), nullable=True),
sa.Column('Redovisnar', sa.SmallInteger(), nullable=True),
sa.Column('Period', sa.SmallInteger(), nullable=True),
sa.Column('FaktDat', sa.DateTime(), nullable=True),
sa.Column('FaktTB', sa.Numeric(precision=19, scale=4), nullable=True),
sa.Column('FaktTG', sa.Numeric(precision=8, scale=3), nullable=True),
sa.Column('FaktLevAnt', sa.Numeric(precision=15, scale=6), nullable=True),
sa.Column('FaktLevAntAltEnh', sa.Numeric(precision=15, scale=6), nullable=True),
sa.Column('FPris', sa.Numeric(precision=19, scale=4), nullable=True),
sa.Column('FaktRadSumma', sa.Numeric(precision=19, scale=4), nullable=True),
sa.Column('ValKod', sa.String(length=3), nullable=True),
sa.Column('ValKurs', sa.Numeric(precision=22, scale=14), nullable=True),
sa.Column('RowCreatedDt', sa.DateTime(), nullable=True),
sa.Column('RowUpdatedDt', sa.DateTime(), nullable=True),
sa.Column('RowUpdatedBy', sa.String(length=16), nullable=True),
sa.ForeignKeyConstraint(['FtgNr'], ['jvs_customers.FtgNr'], ),
sa.PrimaryKeyConstraint(
'FaktNr', 'FaktRadnr', 'ForetagKod', name='invoice_rows_primary_key')
)
op.create_table(
'jvs_order_rows',
sa.Column('OrderNr', sa.BigInteger(), nullable=False),
sa.Column('OrdRadnr', sa.Integer(), nullable=False),
sa.Column('OrdRadNrStrPos', sa.Integer(), nullable=False),
sa.Column('OrdRestNr', sa.SmallInteger(), nullable=False),
sa.Column('ForetagKod', sa.SmallInteger(), nullable=False),
sa.Column('ArtNr', sa.String(length=16), nullable=True),
sa.Column('FtgNr', sa.String(length=16), nullable=True),
sa.Column('vb_pris', sa.Numeric(precision=19, scale=4), nullable=True),
sa.Column('OrdAntal', sa.Numeric(precision=15, scale=6), nullable=True),
sa.Column('OrdAntalAltEnh', sa.Numeric(precision=15, scale=6), nullable=True),
sa.Column('AltEnhetKod', sa.String(length=16), nullable=True),
sa.Column('OrdLevAntal', sa.Numeric(precision=15, scale=6), nullable=True),
sa.Column('OrdLevAntalAltEnh', sa.Numeric(precision=15, scale=6), nullable=True),
sa.Column('FaktNr', sa.BigInteger(), nullable=True),
sa.Column('OrdDatum', sa.DateTime(), nullable=True),
sa.Column('OrdBerLevDat', sa.DateTime(), nullable=True),
sa.Column('OrdBerednDat', sa.DateTime(), nullable=True),
sa.Column('OrdLevDat', sa.DateTime(), nullable=True),
sa.Column('Saljare', sa.String(length=32), nullable=True),
sa.Column('SaljareNamn', sa.String(length=64), nullable=True),
sa.Column('OrdRadSt', sa.SmallInteger(), nullable=True),
sa.Column('OrdRStatBeskr', sa.String(length=64), nullable=True),
sa.Column('OrdTyp', sa.SmallInteger(), nullable=True),
sa.Column('OrdTypBeskr', sa.String(length=64), nullable=True),
sa.Column('RowCreatedDt', sa.DateTime(), nullable=True),
sa.Column('RowCreatedBy', sa.String(length=16), nullable=True),
sa.Column('RowUpdatedDt', sa.DateTime(), nullable=True),
sa.Column('RowUpdatedBy', sa.String(length=16), nullable=True),
sa.ForeignKeyConstraint(['FtgNr'], ['jvs_customers.FtgNr'], ),
sa.PrimaryKeyConstraint(
'OrderNr', 'OrdRadnr', 'OrdRadNrStrPos',
'OrdRestNr', 'ForetagKod', name='order_rows_primary_key')
)
def downgrade():
op.drop_table('jvs_order_rows')
op.drop_table('jvs_invoice_rows')
op.drop_table('jvs_customers')
op.drop_table('jvs_articles')

View file

@ -0,0 +1,28 @@
"""Add CustomerClasses to Customers
Revision ID: 65b6accf25bd
Revises: 18b08d122636
Create Date: 2017-10-17 13:48:46.424978
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '65b6accf25bd'
down_revision = '18b08d122636'
branch_labels = None
depends_on = None
def upgrade():
op.add_column(
'jvs_customers', sa.Column('KundKlassBeskr', sa.String(length=64), nullable=True))
op.add_column(
'jvs_customers', sa.Column('Kundklass', sa.String(length=16), nullable=True))
def downgrade():
op.drop_column('jvs_customers', 'Kundklass')
op.drop_column('jvs_customers', 'KundKlassBeskr')

View file

@ -0,0 +1,30 @@
"""Support 'disabled' flag for Customers
Revision ID: 6b35aaafded7
Revises: 65b6accf25bd
Create Date: 2017-10-17 15:23:48.164464
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '6b35aaafded7'
down_revision = '65b6accf25bd'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('jvs_customers', sa.Column('MakDateTime', sa.DateTime(), nullable=True))
op.add_column('jvs_customers', sa.Column('Makulerad', sa.Boolean(), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('jvs_customers', 'Makulerad')
op.drop_column('jvs_customers', 'MakDateTime')
# ### end Alembic commands ###