TaskOrders gets EDA client from current Flask app

This commit is contained in:
dandds 2018-08-21 14:02:01 -04:00
parent a50b855389
commit 1a9606f2b8
5 changed files with 21 additions and 20 deletions

View File

@ -1,4 +1,5 @@
from sqlalchemy.orm.exc import NoResultFound from sqlalchemy.orm.exc import NoResultFound
from flask import current_app as app
from atst.database import db from atst.database import db
from atst.models.task_order import TaskOrder from atst.models.task_order import TaskOrder
@ -8,22 +9,22 @@ from .exceptions import NotFoundError
class TaskOrders(object): class TaskOrders(object):
@classmethod @classmethod
def get(cls, order_number, client=None): def get(cls, order_number):
try: try:
task_order = ( task_order = (
db.session.query(TaskOrder).filter_by(number=order_number).one() db.session.query(TaskOrder).filter_by(number=order_number).one()
) )
except NoResultFound: except NoResultFound:
if client: if TaskOrders._client():
task_order = TaskOrders._get_from_eda(order_number, client) task_order = TaskOrders._get_from_eda(order_number)
else: else:
raise NotFoundError("task_order") raise NotFoundError("task_order")
return task_order return task_order
@classmethod @classmethod
def _get_from_eda(cls, order_number, client): def _get_from_eda(cls, order_number):
to_data = client.get_contract(order_number, status="y") to_data = TaskOrders._client().get_contract(order_number, status="y")
if to_data: if to_data:
return TaskOrders.create(to_data["contract_no"]) return TaskOrders.create(to_data["contract_no"])
else: else:
@ -37,3 +38,7 @@ class TaskOrders(object):
db.session.commit() db.session.commit()
return task_order return task_order
@classmethod
def _client(cls):
return app.eda_client

View File

@ -119,15 +119,9 @@ class BaseFinancialForm(ValidatedForm):
class FinancialForm(BaseFinancialForm): class FinancialForm(BaseFinancialForm):
def __init__(self, *args, **kwargs):
self.eda_client = kwargs.get("eda_client")
if self.eda_client:
del(kwargs["eda_client"])
super().__init__(*args, **kwargs)
def validate_task_order_number(form, field): def validate_task_order_number(form, field):
try: try:
TaskOrders.get(field.data, client=form.eda_client) TaskOrders.get(field.data)
except NotFoundError: except NotFoundError:
raise ValidationError("Task Order number not found") raise ValidationError("Task Order number not found")

View File

@ -1,6 +1,5 @@
from flask import render_template, redirect, url_for from flask import render_template, redirect, url_for
from flask import request as http_request from flask import request as http_request
from flask import current_app as app
from . import requests_bp from . import requests_bp
from atst.domain.requests import Requests from atst.domain.requests import Requests
@ -11,7 +10,7 @@ def financial_form(data):
if http_request.args.get("extended"): if http_request.args.get("extended"):
return ExtendedFinancialForm(data=data) return ExtendedFinancialForm(data=data)
else: else:
return FinancialForm(data=data, eda_client=app.eda_client) return FinancialForm(data=data)
@requests_bp.route("/requests/verify/<string:request_id>", methods=["GET"]) @requests_bp.route("/requests/verify/<string:request_id>", methods=["GET"])

View File

@ -14,8 +14,9 @@ def test_can_get_task_order():
assert to.id == to.id assert to.id == to.id
def test_can_get_task_order_from_eda(): def test_can_get_task_order_from_eda(monkeypatch):
to = TaskOrders.get(MockEDAClient.MOCK_CONTRACT_NUMBER, client=MockEDAClient()) monkeypatch.setattr("atst.domain.task_orders.TaskOrders._client", lambda: MockEDAClient())
to = TaskOrders.get(MockEDAClient.MOCK_CONTRACT_NUMBER)
assert to.number == MockEDAClient.MOCK_CONTRACT_NUMBER assert to.number == MockEDAClient.MOCK_CONTRACT_NUMBER
@ -25,6 +26,7 @@ def test_nonexistent_task_order_raises_without_client():
TaskOrders.get("some fake number") TaskOrders.get("some fake number")
def test_nonexistent_task_order_raises_with_client(): def test_nonexistent_task_order_raises_with_client(monkeypatch):
monkeypatch.setattr("atst.domain.task_orders.TaskOrders._client", lambda: MockEDAClient())
with pytest.raises(NotFoundError): with pytest.raises(NotFoundError):
TaskOrders.get("some other fake numer", client=MockEDAClient()) TaskOrders.get("some other fake numer")

View File

@ -69,8 +69,9 @@ def test_ba_code_validation(input_, expected):
assert is_valid == expected assert is_valid == expected
def test_task_order_number_validation(): def test_task_order_number_validation(monkeypatch):
form_invalid = FinancialForm(data={"task_order_number": "1234"}, eda_client=MockEDAClient()) monkeypatch.setattr("atst.domain.task_orders.TaskOrders._client", lambda: MockEDAClient())
form_invalid = FinancialForm(data={"task_order_number": "1234"})
form_invalid.validate() form_invalid.validate()
assert "task_order_number" in form_invalid.errors assert "task_order_number" in form_invalid.errors