From b936f8d6db46c6037de31b8d1d49a1d603bcd113 Mon Sep 17 00:00:00 2001
From: Parbhat Puri <parbhatpuri17@gmail.com>
Date: Fri, 19 Apr 2019 08:52:24 +0000
Subject: [PATCH] GH-1147: Show reviewer's submissions in dashboard

---
 .../dashboard/applicant_dashboard.html        |  2 +-
 .../dashboard/reviewer_dashboard.html         | 35 ++++++++++++++++++-
 opentech/apply/dashboard/views.py             | 19 ++++++++++
 3 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/opentech/apply/dashboard/templates/dashboard/applicant_dashboard.html b/opentech/apply/dashboard/templates/dashboard/applicant_dashboard.html
index 122386a8b..1c2441ac9 100644
--- a/opentech/apply/dashboard/templates/dashboard/applicant_dashboard.html
+++ b/opentech/apply/dashboard/templates/dashboard/applicant_dashboard.html
@@ -38,7 +38,7 @@
                     {% endif %}
                 </a>
             {% endif %}
-    </div>
+        </div>
     {% empty %}
         No active submissions
     {% endfor %}
diff --git a/opentech/apply/dashboard/templates/dashboard/reviewer_dashboard.html b/opentech/apply/dashboard/templates/dashboard/reviewer_dashboard.html
index 0f8c24e00..70d41e53c 100644
--- a/opentech/apply/dashboard/templates/dashboard/reviewer_dashboard.html
+++ b/opentech/apply/dashboard/templates/dashboard/reviewer_dashboard.html
@@ -1,6 +1,6 @@
 {% extends "base-apply.html" %}
 {% load render_table from django_tables2 %}
-{% load static %}
+{% load static statusbar_tags workflow_tags %}
 
 {% block extra_css %}
     {{ filter.form.media.css }}
@@ -36,6 +36,39 @@
 
         {% endif %}
     </div>
+
+    <div class="wrapper wrapper--bottom-space">
+        <h4 class="heading heading--normal">Your active submissions</h4>
+        {% for submission in my_submissions %}
+            <div class="wrapper wrapper--status-bar-outer">
+                <div class="wrapper wrapper--status-bar-inner">
+                    <div>
+                        <h5 class="heading heading--no-margin"><a class="link link--underlined" href="{% url 'funds:submissions:detail' submission.id %}">{{ submission.title }}</a></h5>
+                        <h6 class="heading heading--no-margin heading--submission-meta"><span>Submitted:</span> {{ submission.submit_time.date }} by {{ submission.user.get_full_name }}</h6>
+                    </div>
+                    {% status_bar submission.workflow submission.phase request.user css_class="status-bar--small" %}
+                </div>
+                {% if request.user|has_edit_perm:submission %}
+                    <a class="button button--primary" href="{% url 'funds:submissions:edit' submission.id %}">
+                        {% if submission.status == 'draft_proposal' %}
+                            Start your {{ submission.stage }} application
+                        {% else %}
+                            Edit
+                        {% endif %}
+                    </a>
+                {% endif %}
+            </div>
+        {% empty %}
+            No active submissions
+        {% endfor %}
+    </div>
+
+    {% if my_inactive_submissions_table.data %}
+        <div class="wrapper wrapper--bottom-space">
+            <h4 class="heading heading--normal">Submission history</h4>
+            {% render_table my_inactive_submissions_table %}
+        </div>
+    {% endif %}
 </div>
 
 {% endblock %}
diff --git a/opentech/apply/dashboard/views.py b/opentech/apply/dashboard/views.py
index f6a585156..47b7c0969 100644
--- a/opentech/apply/dashboard/views.py
+++ b/opentech/apply/dashboard/views.py
@@ -108,6 +108,9 @@ class ReviewerDashboardView(TemplateView):
         # Filter for all active statuses.
         active_statuses_filter = ''.join(f'&status={status}' for status in review_filter_for_user(request.user))
 
+        # Applications by reviewer
+        my_submissions, my_inactive_submissions_table = self.get_my_submissions(request, qs)
+
         context = {
             'my_review': my_review,
             'in_review_count': my_review_qs.count(),
@@ -116,6 +119,8 @@ class ReviewerDashboardView(TemplateView):
             'display_more_reviewed': display_more_reviewed,
             'filter': filterset,
             'active_statuses_filter': active_statuses_filter,
+            'my_submissions': my_submissions,
+            'my_inactive_submissions_table': my_inactive_submissions_table,
         }
 
         return render(request, 'dashboard/reviewer_dashboard.html', context)
@@ -144,6 +149,20 @@ class ReviewerDashboardView(TemplateView):
 
         return filterset, my_reviewed_qs, my_reviewed_table, display_more_reviewed
 
+    def get_my_submissions(self, request, qs):
+        my_submissions = qs.filter(
+            user=request.user
+        ).active().current().select_related('draft_revision')
+
+        my_submissions = [
+            submission.from_draft() for submission in my_submissions
+        ]
+        my_inactive_submissions_qs = qs.filter(user=self.request.user).inactive().current()
+        my_inactive_submissions_table = ReviewerSubmissionsTable(
+            my_inactive_submissions_qs, prefix='my-submissions-'
+        )
+        return my_submissions, my_inactive_submissions_table
+
     def get_context_data(self, **kwargs):
         kwargs = super().get_context_data(**kwargs)
         search_term = self.request.GET.get('query')
-- 
GitLab