From 83832e647876be68729e41fb9300b594ecf8eaae Mon Sep 17 00:00:00 2001 From: George Hickman <ghickman@users.noreply.github.com> Date: Tue, 1 Oct 2019 17:19:27 +0100 Subject: [PATCH] Add Stats Blocks to Staff Dashboard (#1482) * Add Staff dashboard stats blocks Ref #1341 --- .../templates/dashboard/dashboard.html | 46 +++++++++---------- opentech/apply/dashboard/tests/test_views.py | 21 ++++++--- opentech/apply/dashboard/views.py | 2 + 3 files changed, 39 insertions(+), 30 deletions(-) diff --git a/opentech/apply/dashboard/templates/dashboard/dashboard.html b/opentech/apply/dashboard/templates/dashboard/dashboard.html index 4d740bb5a..317b0414f 100644 --- a/opentech/apply/dashboard/templates/dashboard/dashboard.html +++ b/opentech/apply/dashboard/templates/dashboard/dashboard.html @@ -23,29 +23,27 @@ <div class="wrapper wrapper--large wrapper--inner-space-medium"> - <!-- Example Stat Block markup - <div class="wrapper wrapper--bottom-space"> - <div class="stat-block"> - <a href="#" class="stat-block__item"> - <p class="stat-block__number">3</p> - <p class="stat-block__text">Submissions waiting for your review</p> - <div class="stat-block__view">View</div> - </a> - <a href="#" class="stat-block__item"> - <p class="stat-block__number">10</p> - <p class="stat-block__text">Live projects under your management</p> - <div class="stat-block__view">View</div> - </a> - <a href="#" class="stat-block__item"> - <p class="stat-block__number">4</p> - <p class="stat-block__text">Requests for payment requiring your attention</p> - <div class="stat-block__view">View</div> - </a> - </div> + <div class="wrapper wrapper--bottom-space"> + <div class="stat-block"> + <a href="#submissions-awaiting-review" class="stat-block__item"> + <p class="stat-block__number">{{ awaiting_reviews.count }}</p> + <p class="stat-block__text">Submissions waiting for your review</p> + <div class="stat-block__view">View</div> + </a> + <a href="#active-projects" class="stat-block__item"> + <p class="stat-block__number">{{ projects.count }}</p> + <p class="stat-block__text">Live projects under your management</p> + <div class="stat-block__view">View</div> + </a> + <a href="#active-payment-requests" class="stat-block__item"> + <p class="stat-block__number">{{ active_payment_requests.count }}</p> + <p class="stat-block__text">Requests for payment requiring your attention</p> + <div class="stat-block__view">View</div> + </a> </div> - --> + </div> - <div class="wrapper wrapper--bottom-space"> + <div id="submissions-awaiting-review" class="wrapper wrapper--bottom-space"> {% include "dashboard/includes/waiting-for-review.html" with in_review_count=awating_reviews.count my_review=awaiting_reviews.table display_more=awaiting_reviews.display_more active_statuses_filter=awaiting_reviews.active_statuses_filter %} </div> @@ -54,7 +52,7 @@ {% endif %} {% if projects.table.data %} - <div class="wrapper wrapper--bottom-space"> + <div id="active-projects" class="wrapper wrapper--bottom-space"> {% include "funds/includes/table_filter_and_search.html" with filter=projects.filterset filter_action=projects.url search_term=search_term search_action=projects.url search_placeholder="projects" use_search=True use_batch_actions=False heading="Your projects" %} {% render_table projects.table %} @@ -68,8 +66,8 @@ {% endif %} {% if active_payment_requests.table.data %} - <div class="wrapper wrapper--bottom-space"> - <h4 class="heading heading--normal heading--no-margin">Active Requests for Payment</h4> + <div id="active-payment-requests" class="wrapper wrapper--bottom-space"> + <h4 class="heading heading--normal">Active requests for payment</h4> {% render_table active_payment_requests.table %} </div> {% endif %} diff --git a/opentech/apply/dashboard/tests/test_views.py b/opentech/apply/dashboard/tests/test_views.py index f3f32b93f..c38cf2d86 100644 --- a/opentech/apply/dashboard/tests/test_views.py +++ b/opentech/apply/dashboard/tests/test_views.py @@ -93,21 +93,21 @@ class TestStaffDashboard(BaseViewTestCase): def test_active_payment_requests_with_no_project(self): response = self.get_page() - self.assertNotContains(response, "Active Requests for Payment") + self.assertNotContains(response, "Active requests for payment") - def test_active_payment_requests_with_no_payment_requests(self): + def test_doesnt_show_active_payment_requests_with_none(self): ProjectFactory(lead=self.user) response = self.get_page() - self.assertNotContains(response, "Active Requests for Payment") + self.assertNotContains(response, "Active requests for payment") - def test_active_payment_requests_with_payment_requests_paid_or_declined(self): + def test_doest_show_active_payment_requests_when_paid_or_declined(self): project = ProjectFactory(lead=self.user) PaymentRequestFactory(project=project, status=PAID) PaymentRequestFactory(project=project, status=DECLINED) response = self.get_page() - self.assertNotContains(response, "Active Requests for Payment") + self.assertNotContains(response, "Active requests for payment") def test_active_payment_requests_with_payment_requests_in_correct_state(self): project = ProjectFactory(lead=self.user) @@ -116,7 +116,16 @@ class TestStaffDashboard(BaseViewTestCase): PaymentRequestFactory(project=project, status=UNDER_REVIEW) response = self.get_page() - self.assertContains(response, "Active Requests for Payment") + self.assertContains(response, "Active requests for payment") + + def test_doesnt_show_active_payment_requests_when_not_mine(self): + project = ProjectFactory() + PaymentRequestFactory(project=project, status=SUBMITTED) + PaymentRequestFactory(project=project, status=CHANGES_REQUESTED) + PaymentRequestFactory(project=project, status=UNDER_REVIEW) + + response = self.get_page() + self.assertNotContains(response, "Active requests for payment") class TestReviewerDashboard(BaseViewTestCase): diff --git a/opentech/apply/dashboard/views.py b/opentech/apply/dashboard/views.py index b7f7cd2dc..58a959dd5 100644 --- a/opentech/apply/dashboard/views.py +++ b/opentech/apply/dashboard/views.py @@ -48,6 +48,7 @@ class AdminDashboardView(TemplateView): ).in_progress() return { + 'count': payment_requests.count(), 'table': PaymentRequestsDashboardTable(payment_requests), } @@ -58,6 +59,7 @@ class AdminDashboardView(TemplateView): limit = 10 return { + 'count': projects.count(), 'filterset': filterset, 'table': ProjectsDashboardTable(projects[:limit]), 'display_more': projects.count() > limit, -- GitLab