From a8f04c134073198feae1d981115a32c8ff3fa2d6 Mon Sep 17 00:00:00 2001
From: Erin Mullaney <erin.mullaney@torchbox.com>
Date: Wed, 13 Feb 2019 08:02:08 -0500
Subject: [PATCH] GH-959 add role assigned to Your Reviews block for staff
 (admins)

---
 opentech/apply/dashboard/views.py          | 3 ++-
 opentech/apply/funds/models/submissions.py | 3 +++
 opentech/apply/funds/tables.py             | 8 ++++++++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/opentech/apply/dashboard/views.py b/opentech/apply/dashboard/views.py
index cd83dc682..99bce4e6c 100644
--- a/opentech/apply/dashboard/views.py
+++ b/opentech/apply/dashboard/views.py
@@ -11,6 +11,7 @@ from opentech.apply.funds.tables import (
     SubmissionReviewerFilterAndSearch,
     SubmissionsTable,
     SummarySubmissionsTable,
+    SummarySubmissionsTableWithRole,
 )
 from opentech.apply.utils.views import ViewDispatcher
 
@@ -57,7 +58,7 @@ class AdminDashboardView(TemplateView):
 
     def get_my_reviews(self, user, qs):
         my_review_qs = qs.in_review_for(user).order_by('-submit_time')
-        my_review_table = SummarySubmissionsTable(my_review_qs[:5], prefix='my-review-')
+        my_review_table = SummarySubmissionsTableWithRole(my_review_qs[:5], prefix='my-review-')
         display_more = (my_review_qs.count() > 5)
 
         return my_review_qs, my_review_table, display_more
diff --git a/opentech/apply/funds/models/submissions.py b/opentech/apply/funds/models/submissions.py
index a7cec3854..898b0e17b 100644
--- a/opentech/apply/funds/models/submissions.py
+++ b/opentech/apply/funds/models/submissions.py
@@ -101,6 +101,8 @@ class ApplicationSubmissionQueryset(JSONOrderable):
         activities = self.model.activities.field.model
         latest_activity = activities.objects.filter(submission=OuterRef('id')).select_related('user')
         comments = activities.comments.filter(submission=OuterRef('id')).visible_to(user)
+        roles_for_review = self.model.assigned.field.model.objects.with_roles().filter(
+            submission=OuterRef('id'), reviewer=user)
 
         reviews = self.model.reviews.field.model.objects.filter(submission=OuterRef('id'))
 
@@ -130,6 +132,7 @@ class ApplicationSubmissionQueryset(JSONOrderable):
                 reviews.submitted().values('submission').annotate(calc_recommendation=Sum('recommendation') / Count('recommendation')).values('calc_recommendation'),
                 output_field=IntegerField(),
             ),
+            role_assigned=Subquery(roles_for_review[:1].values('role__name')),
         ).prefetch_related(
             'reviews__author'
         ).select_related(
diff --git a/opentech/apply/funds/tables.py b/opentech/apply/funds/tables.py
index 620040584..a48ed7dfb 100644
--- a/opentech/apply/funds/tables.py
+++ b/opentech/apply/funds/tables.py
@@ -115,6 +115,14 @@ class SummarySubmissionsTable(BaseAdminSubmissionsTable):
         orderable = False
 
 
+class SummarySubmissionsTableWithRole(BaseAdminSubmissionsTable):
+    """ Adds Role Assigned to the 'Waiting for My Review' table """
+    role_assigned = tables.Column(verbose_name="Assigned Role")
+
+    class Meta(BaseAdminSubmissionsTable.Meta):
+        orderable = False
+
+
 def get_used_rounds(request):
     return Round.objects.filter(submissions__isnull=False).distinct()
 
-- 
GitLab