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)
|
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
|
||||||
|
@ -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,
|
||||||
|
@ -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(
|
||||||
|
@ -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
|
||||||
|
@ -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"]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user