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 .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
|
||||
|
@ -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.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
|
||||
|
Loading…
x
Reference in New Issue
Block a user