Resubmit financial verification #159047362
This commit is contained in:
dandds 2018-09-12 11:11:06 -04:00 committed by GitHub
commit cf8df13de0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 64 additions and 27 deletions

View File

@ -191,6 +191,10 @@ class Requests(object):
def is_pending_financial_verification(cls, request): def is_pending_financial_verification(cls, request):
return request.status == RequestStatus.PENDING_FINANCIAL_VERIFICATION return request.status == RequestStatus.PENDING_FINANCIAL_VERIFICATION
@classmethod
def is_pending_financial_verification_changes(cls, request):
return request.status == RequestStatus.CHANGES_REQUESTED_TO_FINVER
@classmethod @classmethod
def is_pending_ccpo_acceptance(cls, request): def is_pending_ccpo_acceptance(cls, request):
return request.status == RequestStatus.PENDING_CCPO_ACCEPTANCE return request.status == RequestStatus.PENDING_CCPO_ACCEPTANCE

View File

@ -39,3 +39,10 @@ class TaskOrder(Base):
@property @property
def verified(self): def verified(self):
return self.source == Source.EDA return self.source == Source.EDA
def to_dictionary(self):
return {
c.name: getattr(self, c.name)
for c in self.__table__.columns
if c.name not in ["id", "attachment_id"]
}

View File

@ -15,14 +15,6 @@ from atst.forms.ccpo_review import CCPOReviewForm
from atst.forms.internal_comment import InternalCommentForm from atst.forms.internal_comment import InternalCommentForm
def task_order_dictionary(task_order):
return {
c.name: getattr(task_order, c.name)
for c in task_order.__table__.columns
if c.name not in ["id", "attachment_id"]
}
def render_approval(request, form=None): def render_approval(request, form=None):
data = request.body data = request.body
pending_final_approval = Requests.is_pending_ccpo_approval(request) pending_final_approval = Requests.is_pending_ccpo_approval(request)
@ -30,7 +22,7 @@ def render_approval(request, form=None):
Requests.is_pending_ccpo_acceptance(request) or pending_final_approval Requests.is_pending_ccpo_acceptance(request) or pending_final_approval
) )
if pending_final_approval and request.task_order: if pending_final_approval and request.task_order:
data["task_order"] = task_order_dictionary(request.task_order) data["task_order"] = request.task_order.to_dictionary()
internal_comment_form = InternalCommentForm(text=request.internal_comments_text) internal_comment_form = InternalCommentForm(text=request.internal_comments_text)

View File

@ -6,6 +6,13 @@ from atst.domain.requests import Requests
from atst.forms.financial import FinancialForm, ExtendedFinancialForm from atst.forms.financial import FinancialForm, ExtendedFinancialForm
def task_order_data(task_order):
data = task_order.to_dictionary()
data["task_order_number"] = task_order.number
data["funding_type"] = task_order.funding_type.value
return data
def financial_form(data): def financial_form(data):
if http_request.args.get("extended"): if http_request.args.get("extended"):
return ExtendedFinancialForm(data=data) return ExtendedFinancialForm(data=data)
@ -16,7 +23,11 @@ def financial_form(data):
@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=None): def financial_verification(request_id=None):
request = Requests.get(g.current_user, request_id) request = Requests.get(g.current_user, request_id)
form = financial_form(request.body.get("financial_verification")) form_data = request.body.get("financial_verification")
if request.task_order:
form_data.update(task_order_data(request.task_order))
form = financial_form(form_data)
return render_template( return render_template(
"requests/financial_verification.html", "requests/financial_verification.html",
f=form, f=form,

View File

@ -57,6 +57,24 @@ class RequestsIndex(object):
"extended_view": False, "extended_view": False,
} }
def _edit_link_for_request(self, viewing_role, request):
if viewing_role == "ccpo":
return url_for("requests.approval", request_id=request.id)
elif Requests.is_pending_financial_verification(request):
return url_for("requests.financial_verification", request_id=request.id)
elif Requests.is_pending_financial_verification_changes(request):
return url_for(
"requests.financial_verification", request_id=request.id, extended=True
)
elif Requests.is_pending_ccpo_acceptance(
request
) or Requests.is_pending_ccpo_approval(request):
return url_for("requests.view_pending_request", request_id=request.id)
else:
return url_for(
"requests.requests_form_update", screen=1, request_id=request.id
)
def _map_request(self, request, viewing_role): def _map_request(self, request, viewing_role):
time_created = pendulum.instance(request.time_created) time_created = pendulum.instance(request.time_created)
is_new = time_created.add(days=1) > pendulum.now() is_new = time_created.add(days=1) > pendulum.now()
@ -65,21 +83,6 @@ class RequestsIndex(object):
) )
annual_usage = request.annual_spend annual_usage = request.annual_spend
if viewing_role == "ccpo":
edit_link = url_for("requests.approval", request_id=request.id)
elif Requests.is_pending_financial_verification(request):
edit_link = url_for(
"requests.financial_verification", request_id=request.id
)
elif Requests.is_pending_ccpo_acceptance(
request
) or Requests.is_pending_ccpo_approval(request):
edit_link = url_for("requests.view_pending_request", request_id=request.id)
else:
edit_link = url_for(
"requests.requests_form_update", screen=1, request_id=request.id
)
return { return {
"workspace_id": request.workspace.id if request.workspace else None, "workspace_id": request.workspace.id if request.workspace else None,
"order_id": request.id, "order_id": request.id,
@ -90,7 +93,7 @@ class RequestsIndex(object):
"last_edited_timestamp": request.latest_revision.time_updated, "last_edited_timestamp": request.latest_revision.time_updated,
"full_name": request.creator.full_name, "full_name": request.creator.full_name,
"annual_usage": annual_usage, "annual_usage": annual_usage,
"edit_link": edit_link, "edit_link": self._edit_link_for_request(viewing_role, request),
"action_required": request.action_required_by == viewing_role, "action_required": request.action_required_by == viewing_role,
"dod_component": request.latest_revision.dod_component, "dod_component": request.latest_revision.dod_component,
} }

View File

@ -10,7 +10,7 @@ from atst.models.request_revision import RequestRevision
from atst.models.request_review import RequestReview from atst.models.request_review import RequestReview
from atst.models.request_status_event import RequestStatusEvent, RequestStatus from atst.models.request_status_event import RequestStatusEvent, RequestStatus
from atst.models.pe_number import PENumber from atst.models.pe_number import PENumber
from atst.models.task_order import TaskOrder from atst.models.task_order import TaskOrder, Source, FundingType
from atst.models.user import User from atst.models.user import User
from atst.models.role import Role from atst.models.role import Role
from atst.models.workspace import Workspace from atst.models.workspace import Workspace
@ -166,6 +166,17 @@ class TaskOrderFactory(Base):
class Meta: class Meta:
model = TaskOrder model = TaskOrder
source = Source.MANUAL
funding_type = FundingType.PROC
funding_type_other = None
number = "toABC123"
clin_0001 = random.randrange(100, 100000)
clin_0003 = random.randrange(100, 100000)
clin_1001 = random.randrange(100, 100000)
clin_1003 = random.randrange(100, 100000)
clin_2001 = random.randrange(100, 100000)
clin_2003 = random.randrange(100, 100000)
class WorkspaceFactory(Base): class WorkspaceFactory(Base):
class Meta: class Meta:

View File

@ -0,0 +1,9 @@
from atst.models.task_order import TaskOrder
from tests.factories import TaskOrderFactory
def test_as_dictionary():
data = TaskOrderFactory.dictionary()
real_task_order = TaskOrderFactory.create(**data)
assert real_task_order.to_dictionary() == data