implement real KPI counts
This commit is contained in:
parent
4c587864ef
commit
e97fdbf140
@ -158,7 +158,7 @@ class Requests(object):
|
||||
return request.status == RequestStatus.PENDING_CCPO_APPROVAL
|
||||
|
||||
@classmethod
|
||||
def count_status(self, status):
|
||||
def status_count(cls, status):
|
||||
raw = text("""
|
||||
SELECT count(requests_with_status.id)
|
||||
FROM (
|
||||
@ -174,3 +174,19 @@ WHERE requests_with_status.status = :status;
|
||||
(count,) = results
|
||||
return count
|
||||
|
||||
@classmethod
|
||||
def in_progress_count(cls):
|
||||
return sum([
|
||||
Requests.status_count(RequestStatus.STARTED),
|
||||
Requests.status_count(RequestStatus.PENDING_FINANCIAL_VERIFICATION),
|
||||
Requests.status_count(RequestStatus.CHANGES_REQUESTED),
|
||||
])
|
||||
|
||||
@classmethod
|
||||
def pending_ccpo_count(cls):
|
||||
return Requests.status_count(RequestStatus.PENDING_CCPO_APPROVAL)
|
||||
|
||||
@classmethod
|
||||
def completed_count(cls):
|
||||
return Requests.status_count(RequestStatus.APPROVED)
|
||||
|
||||
|
@ -12,6 +12,7 @@ class RequestStatus(Enum):
|
||||
STARTED = "Started"
|
||||
PENDING_FINANCIAL_VERIFICATION = "Pending Financial Verification"
|
||||
PENDING_CCPO_APPROVAL = "Pending CCPO Approval"
|
||||
CHANGES_REQUESTED = "Changes Requested"
|
||||
APPROVED = "Approved"
|
||||
EXPIRED = "Expired"
|
||||
DELETED = "Deleted"
|
||||
|
@ -32,22 +32,40 @@ def map_request(request):
|
||||
|
||||
@requests_bp.route("/requests", methods=["GET"])
|
||||
def requests_index():
|
||||
requests = []
|
||||
is_ccpo = Permissions.REVIEW_AND_APPROVE_JEDI_WORKSPACE_REQUEST in g.current_user.atat_permissions
|
||||
if is_ccpo:
|
||||
requests = Requests.get_many()
|
||||
else:
|
||||
requests = Requests.get_many(creator=g.current_user)
|
||||
if Permissions.REVIEW_AND_APPROVE_JEDI_WORKSPACE_REQUEST in g.current_user.atat_permissions:
|
||||
return _ccpo_view()
|
||||
|
||||
else:
|
||||
return _non_ccpo_view()
|
||||
|
||||
|
||||
def _ccpo_view():
|
||||
requests = Requests.get_many()
|
||||
mapped_requests = [map_request(r) for r in requests]
|
||||
|
||||
pending_fv = not is_ccpo and any(Requests.is_pending_financial_verification(r) for r in requests)
|
||||
pending_ccpo = not is_ccpo and any(Requests.is_pending_ccpo_approval(r) for r in requests)
|
||||
return render_template(
|
||||
"requests.html",
|
||||
requests=mapped_requests,
|
||||
pending_financial_verification=False,
|
||||
pending_ccpo_approval=False,
|
||||
extended_view=True,
|
||||
kpi_inprogress=Requests.in_progress_count(),
|
||||
kpi_pending=Requests.pending_ccpo_count(),
|
||||
kpi_completed=Requests.completed_count(),
|
||||
)
|
||||
|
||||
|
||||
def _non_ccpo_view():
|
||||
requests = Requests.get_many(creator=g.current_user)
|
||||
mapped_requests = [map_request(r) for r in requests]
|
||||
|
||||
pending_fv = any(Requests.is_pending_financial_verification(r) for r in requests)
|
||||
pending_ccpo = any(Requests.is_pending_ccpo_approval(r) for r in requests)
|
||||
|
||||
return render_template(
|
||||
"requests.html",
|
||||
requests=mapped_requests,
|
||||
pending_financial_verification=pending_fv,
|
||||
pending_ccpo_approval=pending_ccpo,
|
||||
extended_view=is_ccpo
|
||||
extended_view=False,
|
||||
)
|
||||
|
@ -51,16 +51,16 @@
|
||||
{% if extended_view %}
|
||||
<div class="row kpi">
|
||||
<div class="kpi__item col col--grow">
|
||||
<div class="kpi__item__value">3</div>
|
||||
<div class="kpi__item__description">Pending Requests</div>
|
||||
<div class="kpi__item__value">{{ kpi_inprogress }}</div>
|
||||
<div class="kpi__item__description">In Progress</div>
|
||||
</div>
|
||||
<div class="kpi__item col col--grow">
|
||||
<div class="kpi__item__value">2,456</div>
|
||||
<div class="kpi__item__description">Completed Requests This Year</div>
|
||||
<div class="kpi__item__value">{{ kpi_pending }}</div>
|
||||
<div class="kpi__item__description">Pending CCPO Action</div>
|
||||
</div>
|
||||
<div class="kpi__item col col--grow">
|
||||
<div class="kpi__item__value">234</div>
|
||||
<div class="kpi__item__description">Denied Requests</div>
|
||||
<div class="kpi__item__value">{{ kpi_completed }}</div>
|
||||
<div class="kpi__item__description">Completed (Overall)</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -66,7 +66,7 @@ def test_exists(session):
|
||||
assert not Requests.exists(request.id, user_denied)
|
||||
|
||||
|
||||
def test_count_status(session):
|
||||
def test_status_count(session):
|
||||
# make sure table is empty
|
||||
session.query(Request).delete()
|
||||
|
||||
@ -74,5 +74,6 @@ def test_count_status(session):
|
||||
request2 = RequestFactory.create()
|
||||
RequestStatusEventFactory.create(sequence=2, request_id=request2.id, new_status=RequestStatus.PENDING_FINANCIAL_VERIFICATION)
|
||||
|
||||
assert Requests.count_status(RequestStatus.PENDING_FINANCIAL_VERIFICATION) == 1
|
||||
assert Requests.count_status(RequestStatus.STARTED) == 1
|
||||
assert Requests.status_count(RequestStatus.PENDING_FINANCIAL_VERIFICATION) == 1
|
||||
assert Requests.status_count(RequestStatus.STARTED) == 1
|
||||
assert Requests.in_progress_count() == 2
|
||||
|
Loading…
x
Reference in New Issue
Block a user