Remove PE number model

This commit is contained in:
Patrick Smith 2019-02-20 18:26:56 -05:00
parent 3ea9562284
commit 75f9b57979
7 changed files with 32 additions and 104 deletions

View 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 ###

View File

@ -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()

View File

@ -6,7 +6,6 @@ from .permissions import Permissions
from .role import Role
from .user import User
from .portfolio_role import PortfolioRole
from .pe_number import PENumber
from .legacy_task_order import LegacyTaskOrder
from .portfolio import Portfolio
from .application import Application

View File

@ -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
)

View File

@ -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)

View File

@ -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])

View File

@ -9,7 +9,6 @@ from faker import Faker as _Faker
from atst.forms import data
from atst.models.attachment import Attachment
from atst.models.environment import Environment
from atst.models.pe_number import PENumber
from atst.models.application import Application
from atst.models.legacy_task_order import LegacyTaskOrder, Source, FundingType
from atst.models.task_order import TaskOrder
@ -101,11 +100,6 @@ class UserFactory(Base):
return cls.create(atat_role=role, **kwargs)
class PENumberFactory(Base):
class Meta:
model = PENumber
class LegacyTaskOrderFactory(Base):
class Meta:
model = LegacyTaskOrder