Determine if finver form should be extended by checking TO

This commit is contained in:
richard-dds 2018-10-22 10:17:04 -04:00
parent 68a18b834e
commit a1735874e6
6 changed files with 39 additions and 43 deletions

View File

@ -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 ###

View File

@ -159,9 +159,7 @@ class Requests(object):
return Requests.status_count(RequestStatus.APPROVED) return Requests.status_count(RequestStatus.APPROVED)
@classmethod @classmethod
def update_financial_verification( def update_financial_verification(cls, request_id, financial_data, task_order=None):
cls, request_id, financial_data, extended=False, task_order=None
):
request = RequestsQuery.get_with_lock(request_id) request = RequestsQuery.get_with_lock(request_id)
delta = pick( delta = pick(
@ -181,7 +179,6 @@ class Requests(object):
], ],
financial_data, financial_data,
) )
delta["extended"] = extended
if task_order: if task_order:
request.task_order = task_order request.task_order = task_order

View File

@ -6,6 +6,7 @@ from atst.models import Base, types, mixins
from atst.models.request_status_event import RequestStatus from atst.models.request_status_event import RequestStatus
from atst.utils import first_or_none from atst.utils import first_or_none
from atst.models.request_revision import RequestRevision from atst.models.request_revision import RequestRevision
from atst.models.task_order import Source as TaskOrderSource
def map_properties_to_dict(properties, instance): def map_properties_to_dict(properties, instance):
@ -100,7 +101,6 @@ class Request(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
"uii_ids", "uii_ids",
"treasury_code", "treasury_code",
"ba_code", "ba_code",
"extended",
] ]
@property @property
@ -229,6 +229,14 @@ class Request(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
def pe_number(self): def pe_number(self):
return self.body.get("financial_verification", {}).get("pe_id") 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): def __repr__(self):
return "<Request(status='{}', name='{}', creator='{}', is_approved='{}', time_created='{}', id='{}')>".format( return "<Request(status='{}', name='{}', creator='{}', is_approved='{}', time_created='{}', id='{}')>".format(
self.status_displayname, self.status_displayname,

View File

@ -77,7 +77,6 @@ class RequestRevision(Base, mixins.TimestampsMixin, mixins.AuditableMixin):
uii_ids = Column(ARRAY(String)) uii_ids = Column(ARRAY(String))
treasury_code = Column(String) treasury_code = Column(String)
ba_code = Column(String) ba_code = Column(String)
extended = Column(Boolean, default=False)
def __repr__(self): def __repr__(self):
return "<RequestRevision(request='{}', id='{}')>".format( return "<RequestRevision(request='{}', id='{}')>".format(

View File

@ -17,7 +17,7 @@ from atst.utils import getattr_path
def fv_extended(_http_request): 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): class FinancialVerificationBase(object):
@ -151,10 +151,7 @@ class UpdateFinancialVerification(FinancialVerificationBase):
if should_update: if should_update:
task_order = self._try_create_task_order(form, attachment) task_order = self._try_create_task_order(form, attachment)
updated_request = Requests.update_financial_verification( updated_request = Requests.update_financial_verification(
self.request.id, self.request.id, form.data, task_order=task_order
form.data,
extended=self.is_extended,
task_order=task_order,
) )
if should_submit: if should_submit:
return Requests.submit_financial_verification(updated_request) return Requests.submit_financial_verification(updated_request)
@ -201,7 +198,7 @@ class SaveFinancialVerificationDraft(FinancialVerificationBase):
attachment = self._process_attachment(self.is_extended, form) attachment = self._process_attachment(self.is_extended, form)
task_order = self._try_create_task_order(form, attachment) task_order = self._try_create_task_order(form, attachment)
updated_request = Requests.update_financial_verification( 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: if valid:
@ -213,9 +210,13 @@ class SaveFinancialVerificationDraft(FinancialVerificationBase):
@requests_bp.route("/requests/verify/<string:request_id>", methods=["GET"]) @requests_bp.route("/requests/verify/<string:request_id>", methods=["GET"])
def financial_verification(request_id): def financial_verification(request_id):
request = Requests.get(g.current_user, request_id) request = Requests.get(g.current_user, request_id)
is_extended = fv_extended(http_request) or request.financial_verification.get( is_extended = fv_extended(http_request)
"extended", False
) 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( form = GetFinancialVerificationForm(
g.current_user, request, is_extended=is_extended g.current_user, request, is_extended=is_extended

View File

@ -263,3 +263,22 @@ def test_get_fv_form_route(client, user_session, fv_data):
) )
assert response.status_code == 200 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"]