diff --git a/atst/app.py b/atst/app.py
index ccecd534..af9f1a0c 100644
--- a/atst/app.py
+++ b/atst/app.py
@@ -24,7 +24,6 @@ from atst.domain.authz import Authorization
from atst.domain.csp import make_csp_provider
from atst.domain.portfolios import Portfolios
from atst.models.permissions import Permissions
-from atst.eda_client import MockEDAClient
from atst.utils import mailer
from atst.utils.form_cache import FormCache
from atst.utils.json import CustomJSONEncoder
@@ -61,7 +60,6 @@ def make_app(config):
make_flask_callbacks(app)
register_filters(app)
- make_eda_client(app)
make_csp_provider(app)
make_crl_validator(app)
make_mailer(app)
@@ -235,10 +233,6 @@ def make_crl_validator(app):
)
-def make_eda_client(app):
- app.eda_client = MockEDAClient()
-
-
def make_mailer(app):
if app.config["DEBUG"]:
mailer_connection = mailer.RedisConnection(app.redis)
diff --git a/atst/eda_client.py b/atst/eda_client.py
deleted file mode 100644
index fe56cd0a..00000000
--- a/atst/eda_client.py
+++ /dev/null
@@ -1,197 +0,0 @@
-from csv import DictReader
-import defusedxml.ElementTree as ET
-
-import requests
-from requests.auth import HTTPBasicAuth
-
-
-def parse_eda_xml(xml_string):
- contract_et = ET.fromstring(xml_string)
- handler = EDAXMLHandler(contract_et)
- handler.parse()
- return {
- "clin_0001": handler.clins.get("0001"),
- "clin_0003": handler.clins.get("0003"),
- "clin_1001": handler.clins.get("1001"),
- "clin_1003": handler.clins.get("1003"),
- "clin_2001": handler.clins.get("2001"),
- "clin_2003": handler.clins.get("2003"),
- }
-
-
-class EDAXMLHandler:
- def __init__(self, element_tree):
- self.element_tree = element_tree
- self.clins = {}
-
- @property
- def _line_items(self):
- return self.element_tree.findall(".//LineItem[LineItemType='CLIN']/../../..")
-
- def parse(self):
- for line_item in self._line_items:
- number_el = line_item.find(".//LineItemBase")
- amount_details = line_item.find(
- ".//ItemOtherAmounts[AmountDescription='Not to Exceed Amount (Funding)']/Amount"
- )
- if number_el is not None and amount_details is not None:
- try:
- self.clins[number_el.text] = float(amount_details.text)
- except ValueError:
- continue
-
-
-class EDAClientBase(object):
- def list_contracts(
- self,
- contract_number=None,
- delivery_order=None,
- cage_code=None,
- duns_number=None,
- ):
- """
- Get a list of all contracts matching the given filters.
- """
- raise NotImplementedError()
-
- def get_contract(self, contract_number, status):
- """
- Get details for a contract.
- """
- raise NotImplementedError()
-
-
-class MockEDAClient(EDAClientBase):
- def __init__(self, *args, **kwargs):
- pass
-
- def list_contracts(
- self,
- contract_number=None,
- delivery_order=None,
- cage_code=None,
- duns_number=None,
- ):
- return [
- {
- "aco_mod": "01",
- "admin_dodaac": None,
- "cage_code": "1U305",
- "contract_no": "DCA10096D0052",
- "delivery_order": "0084",
- "duns_number": None,
- "issue_date": "20000228",
- "issue_dodaac": None,
- "location": "https://docsrv1.nit.disa.mil:443/eda/enforcer/C0414345.PDF?ver=1.4&loc=Y29udHJhY3RzL29nZGVuL3ZlbmRvci8xOTk4LzA5LzE0L0MwNDE0MzQ1LlBERg==&sourceurl=aHR0cHM6Ly9lZGE0Lm5pdC5kaXNhLm1pbC9wbHMvdXNlci9uZXdfYXBwLkdldF9Eb2M_cFRhYmxlX0lEPTImcFJlY29yZF9LZXk9OEE2ODExNjM2RUY5NkU2M0UwMzQwMDYwQjBCMjgyNkM=&uid=6CFC2B2322E86FD5E054002264936E3C&qid=19344159&signed=G&qdate=20180529194407GMT&token=6xQICrrrfIMciEJSpXmfsAYrToM=",
- "pay_dodaac": None,
- "pco_mod": "02",
- },
- {
- "aco_mod": "01",
- "admin_dodaac": None,
- "cage_code": "1U305",
- "contract_no": "DCA10096D0052",
- "delivery_order": "0084",
- "duns_number": None,
- "issue_date": "20000228",
- "issue_dodaac": None,
- "location": "https://docsrv1.nit.disa.mil:443/eda/enforcer/C0414345.PDF?ver=1.4&loc=Y29udHJhY3RzL29nZGVuL3ZlbmRvci8xOTk4LzA5LzE0L0MwNDE0MzQ1LlBERg==&sourceurl=aHR0cHM6Ly9lZGE0Lm5pdC5kaXNhLm1pbC9wbHMvdXNlci9uZXdfYXBwLkdldF9Eb2M_cFRhYmxlX0lEPTImcFJlY29yZF9LZXk9OEE2ODExNjM2RUY5NkU2M0UwMzQwMDYwQjBCMjgyNkM=&uid=6CFC2B2322E86FD5E054002264936E3C&qid=19344159&signed=G&qdate=20180529194407GMT&token=6xQICrrrfIMciEJSpXmfsAYrToM=",
- "pay_dodaac": None,
- "pco_mod": "02",
- },
- {
- "aco_mod": "01",
- "admin_dodaac": None,
- "cage_code": "1U305",
- "contract_no": "DCA10096D0052",
- "delivery_order": "0084",
- "duns_number": None,
- "issue_date": "20000228",
- "issue_dodaac": None,
- "location": "https://docsrv1.nit.disa.mil:443/eda/enforcer/C0414345.PDF?ver=1.4&loc=Y29udHJhY3RzL29nZGVuL3ZlbmRvci8xOTk4LzA5LzE0L0MwNDE0MzQ1LlBERg==&sourceurl=aHR0cHM6Ly9lZGE0Lm5pdC5kaXNhLm1pbC9wbHMvdXNlci9uZXdfYXBwLkdldF9Eb2M_cFRhYmxlX0lEPTImcFJlY29yZF9LZXk9OEE2ODExNjM2RUY5NkU2M0UwMzQwMDYwQjBCMjgyNkM=&uid=6CFC2B2322E86FD5E054002264936E3C&qid=19344159&signed=G&qdate=20180529194407GMT&token=6xQICrrrfIMciEJSpXmfsAYrToM=",
- "pay_dodaac": None,
- "pco_mod": "02",
- },
- ]
-
- MOCK_CONTRACT_NUMBER = "DCA10096D0052"
-
- def get_contract(self, contract_number, status):
- if contract_number == self.MOCK_CONTRACT_NUMBER and status == "y":
- return {
- "number": "DCA10096D0052",
- "clin_0001": 500,
- "clin_0003": 600,
- "clin_1001": 700,
- "clin_1003": 800,
- "clin_2001": 900,
- "clin_2003": 1000,
- }
- else:
- return None
-
-
-class EDAClient(EDAClientBase):
- def __init__(self, base_url, user_name, user_role, auth_name, auth_pass):
- self.base_url = base_url
- self.user_name = user_name
- self.user_role = user_role
- self.auth = HTTPBasicAuth(auth_name, auth_pass)
-
- def _make_url(self, method, **kwargs):
- query_args = dict(kwargs)
- query_string = "&".join(
- ["{}={}".format(key, value) for key, value in query_args.items()]
- )
- return "{base_url}/{method}?{query_string}".format(
- base_url=self.base_url, method=method, query_string=query_string
- )
-
- def _get(self, method, **kwargs):
- url = self._make_url(method, **kwargs)
- return requests.get(url, auth=self.auth, verify="ssl/server-certs/eda.pem")
-
- def list_contracts(
- self,
- contract_number=None,
- delivery_order=None,
- cage_code=None,
- duns_number=None,
- ):
- response = self._get(
- "wawf_interface.returnContractList",
- pContract=contract_number,
- pDelivery_Order=delivery_order,
- pCage_Code=cage_code,
- pDuns_Number=duns_number,
- pUserName=self.user_name,
- pUser_Role=self.user_role,
- )
- lines = response.text.replace("
", "").split("\n")
- return list(DictReader(lines))
-
- def get_contract(self, contract_number, status):
- response = self._get(
- "pds_contract_interface.get_xml_doc",
- pContract=contract_number,
- pStatus=status,
- )
- if response.text.startswith("No data found"):
- return None
-
- eda_data = {"number": contract_number}
- eda_data.update(parse_eda_xml(response.text))
- return eda_data
-
- def get_clins(self, record_key, clins, cage_code="", duns_number=""):
- response = self._get(
- "wawf_interface.returnclinXML",
- pCage_Code=cage_code,
- pDuns_Number=duns_number,
- pUserName=self.user_name,
- pUser_Role=self.user_role,
- pRecord_key=record_key,
- pClins=clins,
- )
- # TODO: Parse XML, similar to `get_contract`
- return response
diff --git a/script/example_fetch_from_eda.py b/script/example_fetch_from_eda.py
deleted file mode 100644
index dc297347..00000000
--- a/script/example_fetch_from_eda.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# 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_config, make_app
-from atst.eda_client import EDAClient
-
-
-config = make_config({"DISABLE_CRL_CHECK": True})
-
-client = EDAClient(
- base_url=config.get("EDA_HOST"),
- user_name=config.get("EDA_USER_NAME"),
- user_role=config.get("EDA_USER_ROLE"),
- auth_name=config.get("EDA_AUTH_NAME"),
- auth_pass=config.get("EDA_AUTH_PASS"),
-)
-
-contract_number = "DCA10096D0052"
-
-listed = client.list_contracts(
- contract_number=contract_number,
- delivery_order="",
- cage_code="1U305",
- duns_number="",
-)
-contract = client.get_contract(contract_number=contract_number, status="Y")
-
-requested_clins = ",".join(["'0001'", "'0003'", "'1001'", "'1003'", "'2001'", "'2003'"])
-clins = client.get_clins(
- record_key=contract_number,
- duns_number="",
- cage_code="1U305",
- with_clins=requested_clins,
-)
diff --git a/tests/test_eda_client.py b/tests/test_eda_client.py
deleted file mode 100644
index 787ba8c8..00000000
--- a/tests/test_eda_client.py
+++ /dev/null
@@ -1,57 +0,0 @@
-from atst.eda_client import MockEDAClient, parse_eda_xml
-
-
-mock_client = MockEDAClient()
-
-
-def test_list_contracts():
- results = mock_client.list_contracts()
- assert len(results) == 3
-
-
-def test_get_contract():
- result = mock_client.get_contract("DCA10096D0052", "y")
- assert result["number"] == "DCA10096D0052"
-
-
-def test_contract_not_found():
- result = mock_client.get_contract("abc", "y")
- assert result is None
-
-
-def test_eda_xml_parser():
- with open("tests/fixtures/eda_contract.xml") as contract:
- eda_data = parse_eda_xml(contract.read())
- assert eda_data["clin_0001"] == 200_000.00
- assert not eda_data["clin_0003"]
-
-
-_EDA_XML_NO_NUMBER = """
-
-
-
-
-
-
-
- CLIN
- 0001
-
-
-
-
-
- Not to Exceed Amount (Funding)
- not a number
-
-
-
-
-
-
-"""
-
-
-def test_eda_xml_parser_with_bad_xml():
- eda_data = parse_eda_xml(_EDA_XML_NO_NUMBER)
- assert eda_data["clin_0001"] is None