From 75f9b57979f50bd366927fb70b309548deddcc92 Mon Sep 17 00:00:00 2001 From: Patrick Smith Date: Wed, 20 Feb 2019 18:26:56 -0500 Subject: [PATCH] Remove PE number model --- .../978bf56e21b6_remove_pe_number_model.py | 32 +++++++++++++++++++ atst/domain/pe_numbers.py | 24 -------------- atst/models/__init__.py | 1 - atst/models/pe_number.py | 15 --------- script/ingest_pe_numbers.py | 30 ----------------- tests/domain/test_pe_numbers.py | 28 ---------------- tests/factories.py | 6 ---- 7 files changed, 32 insertions(+), 104 deletions(-) create mode 100644 alembic/versions/978bf56e21b6_remove_pe_number_model.py delete mode 100644 atst/domain/pe_numbers.py delete mode 100644 atst/models/pe_number.py delete mode 100644 script/ingest_pe_numbers.py delete mode 100644 tests/domain/test_pe_numbers.py diff --git a/alembic/versions/978bf56e21b6_remove_pe_number_model.py b/alembic/versions/978bf56e21b6_remove_pe_number_model.py new file mode 100644 index 00000000..17cd2f1b --- /dev/null +++ b/alembic/versions/978bf56e21b6_remove_pe_number_model.py @@ -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 ### diff --git a/atst/domain/pe_numbers.py b/atst/domain/pe_numbers.py deleted file mode 100644 index 756ea026..00000000 --- a/atst/domain/pe_numbers.py +++ /dev/null @@ -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() diff --git a/atst/models/__init__.py b/atst/models/__init__.py index d4d0e8cc..7055a637 100644 --- a/atst/models/__init__.py +++ b/atst/models/__init__.py @@ -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 diff --git a/atst/models/pe_number.py b/atst/models/pe_number.py deleted file mode 100644 index 626d6842..00000000 --- a/atst/models/pe_number.py +++ /dev/null @@ -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 "".format( - self.number, self.description - ) diff --git a/script/ingest_pe_numbers.py b/script/ingest_pe_numbers.py deleted file mode 100644 index 5dd55580..00000000 --- a/script/ingest_pe_numbers.py +++ /dev/null @@ -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) diff --git a/tests/domain/test_pe_numbers.py b/tests/domain/test_pe_numbers.py deleted file mode 100644 index 945a6510..00000000 --- a/tests/domain/test_pe_numbers.py +++ /dev/null @@ -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]) diff --git a/tests/factories.py b/tests/factories.py index c4d50b02..47034d77 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -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