Determine if finver form should be extended by checking TO
This commit is contained in:
parent
68a18b834e
commit
a1735874e6
@ -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 ###
|
@ -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
|
||||
|
@ -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 "<Request(status='{}', name='{}', creator='{}', is_approved='{}', time_created='{}', id='{}')>".format(
|
||||
self.status_displayname,
|
||||
|
@ -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 "<RequestRevision(request='{}', id='{}')>".format(
|
||||
|
@ -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/<string:request_id>", 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
|
||||
|
@ -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"]
|
||||
|
Loading…
x
Reference in New Issue
Block a user