Remove PE number model
This commit is contained in:
parent
3ea9562284
commit
75f9b57979
32
alembic/versions/978bf56e21b6_remove_pe_number_model.py
Normal file
32
alembic/versions/978bf56e21b6_remove_pe_number_model.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
"""Remove PE number model
|
||||||
|
|
||||||
|
Revision ID: 978bf56e21b6
|
||||||
|
Revises: c92cec2f32d4
|
||||||
|
Create Date: 2019-02-20 18:24:37.970323
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '978bf56e21b6'
|
||||||
|
down_revision = 'c92cec2f32d4'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.drop_table('pe_numbers')
|
||||||
|
# ### end Alembic commands ###
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
# ### commands auto generated by Alembic - please adjust! ###
|
||||||
|
op.create_table('pe_numbers',
|
||||||
|
sa.Column('number', sa.VARCHAR(), autoincrement=False, nullable=False),
|
||||||
|
sa.Column('description', sa.VARCHAR(), autoincrement=False, nullable=True),
|
||||||
|
sa.PrimaryKeyConstraint('number', name='pe_numbers_pkey')
|
||||||
|
)
|
||||||
|
# ### end Alembic commands ###
|
@ -1,24 +0,0 @@
|
|||||||
from sqlalchemy.dialects.postgresql import insert
|
|
||||||
|
|
||||||
from atst.database import db
|
|
||||||
from atst.models.pe_number import PENumber
|
|
||||||
from .exceptions import NotFoundError
|
|
||||||
|
|
||||||
|
|
||||||
class PENumbers(object):
|
|
||||||
@classmethod
|
|
||||||
def get(cls, number):
|
|
||||||
pe_number = db.session.query(PENumber).get(number)
|
|
||||||
if not pe_number:
|
|
||||||
raise NotFoundError("pe_number")
|
|
||||||
|
|
||||||
return pe_number
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def create_many(cls, list_of_pe_numbers):
|
|
||||||
stmt = insert(PENumber).values(list_of_pe_numbers)
|
|
||||||
do_update = stmt.on_conflict_do_update(
|
|
||||||
index_elements=["number"], set_=dict(description=stmt.excluded.description)
|
|
||||||
)
|
|
||||||
db.session.execute(do_update)
|
|
||||||
db.session.commit()
|
|
@ -6,7 +6,6 @@ from .permissions import Permissions
|
|||||||
from .role import Role
|
from .role import Role
|
||||||
from .user import User
|
from .user import User
|
||||||
from .portfolio_role import PortfolioRole
|
from .portfolio_role import PortfolioRole
|
||||||
from .pe_number import PENumber
|
|
||||||
from .legacy_task_order import LegacyTaskOrder
|
from .legacy_task_order import LegacyTaskOrder
|
||||||
from .portfolio import Portfolio
|
from .portfolio import Portfolio
|
||||||
from .application import Application
|
from .application import Application
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
from sqlalchemy import String, Column
|
|
||||||
|
|
||||||
from atst.models import Base
|
|
||||||
|
|
||||||
|
|
||||||
class PENumber(Base):
|
|
||||||
__tablename__ = "pe_numbers"
|
|
||||||
|
|
||||||
number = Column(String, primary_key=True)
|
|
||||||
description = Column(String)
|
|
||||||
|
|
||||||
def __repr__(self): # pragma: no cover
|
|
||||||
return "<PENumber(number='{}', description='{}')>".format(
|
|
||||||
self.number, self.description
|
|
||||||
)
|
|
@ -1,30 +0,0 @@
|
|||||||
from urllib.request import urlopen
|
|
||||||
import csv
|
|
||||||
|
|
||||||
# Add root project dir to the python path
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
|
||||||
sys.path.append(parent_dir)
|
|
||||||
|
|
||||||
from atst.app import make_app, make_config
|
|
||||||
from atst.domain.pe_numbers import PENumbers
|
|
||||||
|
|
||||||
|
|
||||||
def get_pe_numbers(url):
|
|
||||||
response = urlopen(url)
|
|
||||||
t = response.read().decode("utf-8")
|
|
||||||
return list(csv.reader(t.split("\r\n")))
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
config = make_config({"DISABLE_CRL_CHECK": True})
|
|
||||||
url = config["PE_NUMBER_CSV_URL"]
|
|
||||||
print("Fetching PE numbers from {}".format(url))
|
|
||||||
pe_numbers = get_pe_numbers(url)
|
|
||||||
|
|
||||||
app = make_app(config)
|
|
||||||
with app.app_context():
|
|
||||||
print("Inserting {} PE numbers".format(len(pe_numbers)))
|
|
||||||
PENumbers.create_many(pe_numbers)
|
|
@ -1,28 +0,0 @@
|
|||||||
import pytest
|
|
||||||
|
|
||||||
from atst.domain.exceptions import NotFoundError
|
|
||||||
from atst.domain.pe_numbers import PENumbers
|
|
||||||
|
|
||||||
from tests.factories import PENumberFactory
|
|
||||||
|
|
||||||
|
|
||||||
def test_can_get_pe_number():
|
|
||||||
new_pen = PENumberFactory.create(
|
|
||||||
number="0701367F", description="Combat Support - Offensive"
|
|
||||||
)
|
|
||||||
pen = PENumbers.get(new_pen.number)
|
|
||||||
|
|
||||||
assert pen.number == new_pen.number
|
|
||||||
|
|
||||||
|
|
||||||
def test_nonexistent_pe_number_raises():
|
|
||||||
with pytest.raises(NotFoundError):
|
|
||||||
PENumbers.get("some fake number")
|
|
||||||
|
|
||||||
|
|
||||||
def test_create_many():
|
|
||||||
pen_list = [["123456", "Land Speeder"], ["7891011", "Lightsaber"]]
|
|
||||||
PENumbers.create_many(pen_list)
|
|
||||||
|
|
||||||
assert PENumbers.get(pen_list[0][0])
|
|
||||||
assert PENumbers.get(pen_list[1][0])
|
|
@ -9,7 +9,6 @@ from faker import Faker as _Faker
|
|||||||
from atst.forms import data
|
from atst.forms import data
|
||||||
from atst.models.attachment import Attachment
|
from atst.models.attachment import Attachment
|
||||||
from atst.models.environment import Environment
|
from atst.models.environment import Environment
|
||||||
from atst.models.pe_number import PENumber
|
|
||||||
from atst.models.application import Application
|
from atst.models.application import Application
|
||||||
from atst.models.legacy_task_order import LegacyTaskOrder, Source, FundingType
|
from atst.models.legacy_task_order import LegacyTaskOrder, Source, FundingType
|
||||||
from atst.models.task_order import TaskOrder
|
from atst.models.task_order import TaskOrder
|
||||||
@ -101,11 +100,6 @@ class UserFactory(Base):
|
|||||||
return cls.create(atat_role=role, **kwargs)
|
return cls.create(atat_role=role, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class PENumberFactory(Base):
|
|
||||||
class Meta:
|
|
||||||
model = PENumber
|
|
||||||
|
|
||||||
|
|
||||||
class LegacyTaskOrderFactory(Base):
|
class LegacyTaskOrderFactory(Base):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = LegacyTaskOrder
|
model = LegacyTaskOrder
|
||||||
|
Loading…
x
Reference in New Issue
Block a user