Skip to content
Snippets Groups Projects
Commit 6778d93f authored by Remco Tukker's avatar Remco Tukker
Browse files

start of hardcoded nren list (not working yet)

parent 8d06ada9
No related branches found
No related tags found
1 merge request!1normalization of nrens including datamigration
......@@ -25,7 +25,7 @@ base_schema: Any = declarative_base(metadata=metadata_obj)
class NREN(base_schema):
__tablename__ = 'nrens'
__tablename__ = 'nren'
id = sa.Column(sa.Integer, primary_key=True)
name = sa.Column(sa.String(128), nullable=False)
......@@ -33,7 +33,7 @@ class NREN(base_schema):
class BudgetEntry(base_schema):
__tablename__ = 'budgets'
nren_id = sa.Column(sa.Integer, sa.schema.ForeignKey(NREN.id), primary_key=True)
nren = relationship(NREN)
nren = relationship(NREN, lazy='joined')
year = sa.Column(sa.Integer, primary_key=True)
budget = sa.Column(sa.Numeric(asdecimal=False), nullable=False)
......@@ -41,7 +41,7 @@ class BudgetEntry(base_schema):
class FundingSource(base_schema):
__tablename__ = 'funding_source'
nren_id = sa.Column(sa.Integer, sa.schema.ForeignKey(NREN.id), primary_key=True)
nren = relationship(NREN)
nren = relationship(NREN, lazy='joined')
year = sa.Column(sa.Integer, primary_key=True)
client_institutions = sa.Column(
sa.Numeric(asdecimal=False), nullable=False)
......@@ -61,7 +61,8 @@ class FeeType(Enum):
class ChargingStructure(base_schema):
__tablename__ = 'charging_structure'
nren = sa.Column(sa.String(128), primary_key=True)
nren_id = sa.Column(sa.Integer, sa.schema.ForeignKey(NREN.id), primary_key=True)
nren = relationship(NREN, lazy='joined')
year = sa.Column(sa.Integer, primary_key=True)
fee_type = sa.Column('fee_type', sa.Enum("flat_fee", "usage_based_fee",
"combination", "no_charge",
......
"""normalize nrens
Revision ID: 2b698bb45c09
Revises: b123f21a8f4c
Create Date: 2023-04-12 20:51:05.934130
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '2b698bb45c09'
down_revision = 'b123f21a8f4c'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table(
'nren',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=128), nullable=False),
sa.PrimaryKeyConstraint('id', name=op.f('pk_nren'))
)
op.execute(
"INSERT INTO nren (name) VALUES "
"('AAF - Australian Access Federation'),"
"('AARNet'),"
"('ACOnet'),"
"('AfgREN'),"
"('AMRES'),"
"('ANA'),"
"('Ankabut'),"
"('Arandu'),"
"('ARENA'),"
"('ARN'),"
"('ARNES'),"
"('ASGC'),"
"('ASNET-AM'),"
"('AzRena'),"
"('AzScienceNet'),"
"('BARNet'),"
"('BASNET'),"
"('BdREN'),"
"('Belnet'),"
"('BIHARNET'),"
"('BOLNET'),"
"('BREN'),"
"('Brunet'),"
"('CameroonianNREN'),"
"('CANARIE'),"
"('CARNET'),"
"('CEDIA'),"
"('CERNET'),"
"('CESNET'),"
"('CNRS'),"
"('CNTI'),"
"('CRNet'),"
"('CSTNet'),"
"('CUDI'),"
"('CYNET'),"
"('DeIC'),"
"('DFN'),"
"('e-ARENA'),"
"('eb@le'),"
"('EENet'),"
"('ErdemNet'),"
"('ERNET'),"
"('EtherNet'),"
"('EUN'),"
"('FCCN'),"
"('FREEnet'),"
"('Funet'),"
"('GabonREN'),"
"('GARNET'),"
"('GARR'),"
"('GCC'),"
"('GRENA'),"
"('GRNET S.A.'),"
"('HARNET'),"
"('HEAnet'),"
"('INNOVA|RED'),"
"('Internet2'),"
"('IRANET'),"
"('IRANET/IPM'),"
"('iRENALA'),"
"('ITB'),"
"('ITC'),"
"('IUCC'),"
"('Jisc'),"
"('JREN'),"
"('JUNet'),"
"('KAUST'),"
"('KAZRENA'),"
"('KENET'),"
"('KIFU'),"
"('KOREN'),"
"('KREN'),"
"('KRENA-AKNET'),"
"('KREONET'),"
"('LAT'),"
"('LEARN'),"
"('LERNET'),"
"('LITNET'),"
"('MaliREN'),"
"('MAREN'),"
"('MARnet'),"
"('MARWAN'),"
"('mmREN'),"
"('MoRENet'),"
"('MREN'),"
"('MYREN'),"
"('NCHC'),"
"('ngNER'),"
"('ngREN'),"
"('NiCT'),"
"('NigerREN'),"
"('NII'),"
"('NITC'),"
"('NREN'),"
"('OMREN'),"
"('PADI2'),"
"('PERN'),"
"('PIONIER'),"
"('PNGARNet'),"
"('PREGINET'),"
"('Qatar Foundation'),"
"('RAAP'),"
"('RADEI'),"
"('RAGIE'),"
"('RAICES'),"
"('RAU'),"
"('REACCIUN'),"
"('REANNZ'),"
"('RedCyT'),"
"('RedIRIS'),"
"('RedUNIV'),"
"('RENAM'),"
"('RENATA'),"
"('RENATER'),"
"('RENER'),"
"('RENIA'),"
"('RENU'),"
"('RerBenin'),"
"('RESTENA'),"
"('REUNA'),"
"('RHnet'),"
"('RITER'),"
"('RNERT'),"
"('RNP'),"
"('RNRT'),"
"('RNU'),"
"('RoEduNet'),"
"('RUB'),"
"('RwEdNet'),"
"('SANET'),"
"('SANReN'),"
"('SAREN'),"
"('SARNET'),"
"('SHERN'),"
"('SigmaNet'),"
"('SIKT'),"
"('SingAREN'),"
"('snRER'),"
"('Somaliren'),"
"('SudREN'),"
"('SUNET'),"
"('SUREN'),"
"('SURF'),"
"('SWITCH'),"
"('TARENA'),"
"('TENET'),"
"('TERNET'),"
"('ThaiREN'),"
"('TTRENT'),"
"('TuRENA'),"
"('UARNet'),"
"('ULAKBIM'),"
"('UNITEC'),"
"('UNREN'),"
"('UoM/RicerkaNet'),"
"('URAN'),"
"('UzSciNet'),"
"('VinaREN'),"
"('ZAMREN')"
)
op.add_column('budgets', sa.Column('nren_id', sa.Integer()))
op.execute(
"UPDATE budgets SET nren_id = nren.id FROM nren "
"WHERE budgets.nren = nren.name"
" OR (budgets.nren = 'bla_alias' AND nren.name = 'bla')"
# TODO etc
)
op.alter_column('budgets', 'nren_id', nullable=False)
op.create_foreign_key(op.f('fk_budgets_nren_id_nren'), 'budgets', 'nren', ['nren_id'], ['id'])
op.drop_column('budgets', 'nren')
op.add_column('funding_source', sa.Column('nren_id', sa.Integer()))
# TODO
op.alter_column('funding_source', 'nren_id', nullable=False)
op.create_foreign_key(op.f('fk_funding_source_nren_id_nren'), 'funding_source', 'nren', ['nren_id'], ['id'])
op.drop_column('funding_source', 'nren')
op.add_column('charging_structure', sa.Column('nren_id', sa.Integer()))
# TODO
op.alter_column('charging_structure', 'nren_id', nullable=False)
op.create_foreign_key(op.f('fk_charging_structure_nren_id_nren'), 'charging_structure', 'nren', ['nren_id'], ['id'])
op.drop_column('charging_structure', 'nren')
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('charging_structure', sa.Column('nren', sa.VARCHAR(length=128), autoincrement=False))
op.execute("UPDATE charging_structure SET nren = nren.name FROM nren WHERE charging_structure.nren_id = nren.id")
op.alter_column('charging_structure', 'nren', nullable=False)
op.drop_constraint(op.f('fk_charging_structure_nren_id_nren'), 'charging_structure', type_='foreignkey')
op.drop_column('charging_structure', 'nren_id')
op.add_column('funding_source', sa.Column('nren', sa.VARCHAR(length=128), autoincrement=False))
op.execute("UPDATE funding_source SET nren = nren.name FROM nren WHERE funding_source.nren_id = nren.id")
op.alter_column('funding_source', 'nren', nullable=False)
op.drop_constraint(op.f('fk_funding_source_nren_id_nren'), 'funding_source', type_='foreignkey')
op.drop_column('funding_source', 'nren_id')
op.add_column('budgets', sa.Column('nren', sa.VARCHAR(length=128), autoincrement=False))
op.execute("UPDATE budgets SET nren = nren.name FROM nren WHERE budgets.nren_id = nren.id")
op.alter_column('budgets', 'nren', nullable=False)
op.drop_constraint(op.f('fk_budgets_nren_id_nren'), 'budgets', type_='foreignkey')
op.drop_column('budgets', 'nren_id')
op.drop_table('nren')
# ### end Alembic commands ###
"""normalize nrens
Revision ID: df2536b06f35
Revises: b70ada054046
Create Date: 2023-04-08 09:00:28.451307
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'df2536b06f35'
down_revision = 'b70ada054046'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table(
'nrens',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=128), nullable=False),
sa.PrimaryKeyConstraint('id', name=op.f('pk_nrens'))
)
op.execute(
"INSERT INTO nrens (name) "
"SELECT DISTINCT nren FROM budgets UNION SELECT DISTINCT nren FROM funding_source;"
)
op.add_column('budgets', sa.Column('nren_id', sa.Integer()))
op.execute("UPDATE budgets SET nren_id = nrens.id FROM nrens WHERE budgets.nren = nrens.name")
op.alter_column('budgets', 'nren_id', nullable=False)
op.create_foreign_key(op.f('fk_budgets_nren_id_nrens'), 'budgets', 'nrens', ['nren_id'], ['id'])
op.drop_column('budgets', 'nren')
op.add_column('funding_source', sa.Column('nren_id', sa.Integer()))
op.execute("UPDATE funding_source SET nren_id = nrens.id FROM nrens WHERE funding_source.nren = nrens.name")
op.alter_column('funding_source', 'nren_id', nullable=False)
op.create_foreign_key(op.f('fk_funding_source_nren_id_nrens'), 'funding_source', 'nrens', ['nren_id'], ['id'])
op.drop_column('funding_source', 'nren')
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('funding_source', sa.Column('nren', sa.VARCHAR(length=128), autoincrement=False))
op.execute("UPDATE funding_source SET nren = nrens.name FROM nrens WHERE funding_source.nren_id = nrens.id")
op.alter_column('funding_source', 'nren', nullable=False)
op.drop_constraint(op.f('fk_funding_source_nren_id_nrens'), 'funding_source', type_='foreignkey')
op.drop_column('funding_source', 'nren_id')
op.add_column('budgets', sa.Column('nren', sa.VARCHAR(length=128), autoincrement=False))
op.execute("UPDATE budgets SET nren = nrens.name FROM nrens WHERE budgets.nren_id = nrens.id")
op.alter_column('budgets', 'nren', nullable=False)
op.drop_constraint(op.f('fk_budgets_nren_id_nrens'), 'budgets', type_='foreignkey')
op.drop_column('budgets', 'nren_id')
op.drop_table('nrens')
# ### end Alembic commands ###
......@@ -68,6 +68,6 @@ def budget_view() -> Any:
with db.session_scope() as session:
entries = sorted([_extract_data(entry)
for entry in session.query(model.BudgetEntry).options(joinedload(model.BudgetEntry.nren))],
for entry in session.query(model.BudgetEntry)],
key=lambda d: (d['BUDGET_YEAR'], d['NREN']))
return jsonify(entries)
......@@ -55,7 +55,7 @@ def charging_structure_view() -> Any:
def _extract_data(entry: model.ChargingStructure):
return {
'NREN': entry.nren,
'NREN': entry.nren.name,
'YEAR': int(entry.year),
'FEE_TYPE': entry.fee_type,
}
......
......@@ -73,6 +73,6 @@ def funding_source_view() -> Any:
with db.session_scope() as session:
entries = sorted([_extract_data(entry)
for entry in session.query(model.FundingSource).options(joinedload(model.FundingSource.nren))],
for entry in session.query(model.FundingSource)],
key=lambda d: (d['NREN'], d['YEAR']))
return jsonify(entries)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment