diff --git a/alembic/versions/edf509c974f6_extended_fv.py b/alembic/versions/edf509c974f6_extended_fv.py deleted file mode 100644 index 8877f659..00000000 --- a/alembic/versions/edf509c974f6_extended_fv.py +++ /dev/null @@ -1,28 +0,0 @@ -"""extended fv - -Revision ID: edf509c974f6 -Revises: 9c24c609878a -Create Date: 2018-10-19 14:06:45.396974 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'edf509c974f6' -down_revision = '9c24c609878a' -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('request_revisions', sa.Column('extended', sa.Boolean(), nullable=True)) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_column('request_revisions', 'extended') - # ### end Alembic commands ### diff --git a/atst/domain/requests/requests.py b/atst/domain/requests/requests.py index af838d6d..028739c9 100644 --- a/atst/domain/requests/requests.py +++ b/atst/domain/requests/requests.py @@ -159,9 +159,7 @@ class Requests(object): return Requests.status_count(RequestStatus.APPROVED) @classmethod - def update_financial_verification( - cls, request_id, financial_data, extended=False, task_order=None - ): + def update_financial_verification(cls, request_id, financial_data, task_order=None): request = RequestsQuery.get_with_lock(request_id) delta = pick( @@ -181,7 +179,6 @@ class Requests(object): ], financial_data, ) - delta["extended"] = extended if task_order: request.task_order = task_order diff --git a/atst/models/request.py b/atst/models/request.py index bb2a62b4..443f3c9b 100644 --- a/atst/models/request.py +++ b/atst/models/request.py @@ -6,6 +6,7 @@ from atst.models import Base, types, mixins from atst.models.request_status_event import RequestStatus from atst.utils import first_or_none from atst.models.request_revision import RequestRevision +from atst.models.task_order import Source as TaskOrderSource def map_properties_to_dict(properties, instance): @@ -100,7 +101,6 @@ class Request(Base, mixins.TimestampsMixin, mixins.AuditableMixin): "uii_ids", "treasury_code", "ba_code", - "extended", ] @property @@ -229,6 +229,14 @@ class Request(Base, mixins.TimestampsMixin, mixins.AuditableMixin): def pe_number(self): return self.body.get("financial_verification", {}).get("pe_id") + @property + def has_manual_task_order(self): + return ( + self.task_order.source == TaskOrderSource.MANUAL + if self.task_order is not None + else None + ) + def __repr__(self): return "".format( self.status_displayname, diff --git a/atst/models/request_revision.py b/atst/models/request_revision.py index 8f39d108..1d2da465 100644 --- a/atst/models/request_revision.py +++ b/atst/models/request_revision.py @@ -77,7 +77,6 @@ class RequestRevision(Base, mixins.TimestampsMixin, mixins.AuditableMixin): uii_ids = Column(ARRAY(String)) treasury_code = Column(String) ba_code = Column(String) - extended = Column(Boolean, default=False) def __repr__(self): return "".format( diff --git a/atst/routes/requests/financial_verification.py b/atst/routes/requests/financial_verification.py index 21b7b987..bc052c4d 100644 --- a/atst/routes/requests/financial_verification.py +++ b/atst/routes/requests/financial_verification.py @@ -17,7 +17,7 @@ from atst.utils import getattr_path def fv_extended(_http_request): - return bool(_http_request.args.get("extended")) + return _http_request.args.get("extended", "false").lower() in ["true", "t"] class FinancialVerificationBase(object): @@ -151,10 +151,7 @@ class UpdateFinancialVerification(FinancialVerificationBase): if should_update: task_order = self._try_create_task_order(form, attachment) updated_request = Requests.update_financial_verification( - self.request.id, - form.data, - extended=self.is_extended, - task_order=task_order, + self.request.id, form.data, task_order=task_order ) if should_submit: return Requests.submit_financial_verification(updated_request) @@ -201,7 +198,7 @@ class SaveFinancialVerificationDraft(FinancialVerificationBase): attachment = self._process_attachment(self.is_extended, form) task_order = self._try_create_task_order(form, attachment) updated_request = Requests.update_financial_verification( - self.request.id, form.data, extended=self.is_extended, task_order=task_order + self.request.id, form.data, task_order=task_order ) if valid: @@ -213,9 +210,13 @@ class SaveFinancialVerificationDraft(FinancialVerificationBase): @requests_bp.route("/requests/verify/", methods=["GET"]) def financial_verification(request_id): request = Requests.get(g.current_user, request_id) - is_extended = fv_extended(http_request) or request.financial_verification.get( - "extended", False - ) + is_extended = fv_extended(http_request) + + should_be_extended = not is_extended and request.has_manual_task_order + if should_be_extended: + return redirect( + url_for(".financial_verification", request_id=request_id, extended=True) + ) form = GetFinancialVerificationForm( g.current_user, request, is_extended=is_extended diff --git a/tests/routes/test_financial_verification.py b/tests/routes/test_financial_verification.py index 59f8f95c..5a492eed 100644 --- a/tests/routes/test_financial_verification.py +++ b/tests/routes/test_financial_verification.py @@ -263,3 +263,22 @@ def test_get_fv_form_route(client, user_session, fv_data): ) assert response.status_code == 200 + + +def test_manual_task_order_triggers_extended_form(client, user_session, fv_data): + user = UserFactory.create() + request = RequestFactory.create(creator=user) + + data = {**fv_data, "task_order_number": "DCA10096D0053"} + + UpdateFinancialVerification( + TrueValidator, TrueValidator, user, request, data, is_extended=False + ).execute() + + user_session(user) + response = client.get( + url_for("requests.financial_verification", request_id=request.id), + data=fv_data, + follow_redirects=False, + ) + assert "extended" in response.headers["Location"]