diff --git a/opentech/apply/dashboard/tests/test_views.py b/opentech/apply/dashboard/tests/test_views.py index 7a958af3c99d7e8fb64ed6d6f42f4aac30dc5831..60ac71350a513a14dedadc0b1f7f16fa0af0c52c 100644 --- a/opentech/apply/dashboard/tests/test_views.py +++ b/opentech/apply/dashboard/tests/test_views.py @@ -93,4 +93,3 @@ class TestReviewerDashboard(BaseViewTestCase): response = self.get_page() self.assertNotContains(response, submission.title) self.assertEquals(response.context['in_review_count'], 0) - diff --git a/opentech/apply/dashboard/views.py b/opentech/apply/dashboard/views.py index 96fe23325f583ab11513a06a99d4e3d0c1cbf3a1..35cca65ad3105263ade2c2af062ba3e409246ffd 100644 --- a/opentech/apply/dashboard/views.py +++ b/opentech/apply/dashboard/views.py @@ -26,25 +26,11 @@ class AdminDashboardView(TemplateView): closed_query = '?round_state=closed' rounds_title = 'Your rounds and labs' - my_review_qs = qs.in_review_for(request.user).order_by('-submit_time') - my_review = SummarySubmissionsTable(my_review_qs[:5], prefix='my-review-') - display_more = (my_review_qs.count() > 5) + # Staff reviewer's current to-review submissions + my_review_qs, my_review, display_more = self.get_my_reviews(request.user, qs) # Staff reviewer's reviewed submissions for 'Previous reviews' block - # Replicating django_filters.views.FilterView - my_reviewed_qs = qs.reviewed_by(request.user).order_by('-submit_time') - kwargs = { - 'data': self.request.GET or None, - 'request': self.request, - } - kwargs.update({ - 'queryset': my_reviewed_qs, - }) - self.filterset = SubmissionFilterAndSearch(**kwargs) - my_reviewed_qs = self.filterset.qs - - my_reviewed = SummarySubmissionsTable(my_reviewed_qs[:5], prefix='my-reviewed-') - display_more_reviewed = (my_reviewed_qs.count() > 5) + filterset, my_reviewed_qs, my_reviewed, display_more_reviewed = self.get_my_reviewed(request, qs) return render(request, 'dashboard/dashboard.html', { 'open_rounds': open_rounds, @@ -57,9 +43,32 @@ class AdminDashboardView(TemplateView): 'display_more': display_more, 'my_reviewed': my_reviewed, 'display_more_reviewed': display_more_reviewed, - 'filter': self.filterset, + 'filter': filterset, }) + 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-') + display_more = (my_review_qs.count() > 5) + + return my_review_qs, my_review_table, display_more + + def get_my_reviewed(self, request, qs): + # Replicating django_filters.views.FilterView + my_reviewed_qs = qs.reviewed_by(request.user).order_by('-submit_time') + kwargs = { + 'data': self.request.GET or None, + 'request': self.request, + 'queryset': my_reviewed_qs, + } + filterset = SubmissionFilterAndSearch(**kwargs) + my_reviewed_qs = filterset.qs + + my_reviewed_table = SummarySubmissionsTable(my_reviewed_qs[:5], prefix='my-reviewed-') + display_more_reviewed = (my_reviewed_qs.count() > 5) + + return filterset, my_reviewed_qs, my_reviewed_table, display_more_reviewed + class ReviewerDashboardView(TemplateView): @@ -67,38 +76,44 @@ class ReviewerDashboardView(TemplateView): qs = ApplicationSubmission.objects.all().for_table(self.request.user) # Reviewer's current to-review submissions - my_review_qs = qs.in_review_for(request.user).order_by('-submit_time') - my_review = ReviewerSubmissionsTable(my_review_qs[:5], prefix='my-review-') - display_more = (my_review_qs.count() > 5) + my_review_qs, my_review, display_more = self.get_my_reviews(request.user, qs) + + # Reviewer's reviewed submissions and filters for 'Previous reviews' block + filterset, my_reviewed_qs, my_reviewed, display_more_reviewed = self.get_my_reviewed(request, qs) + context = { 'my_review': my_review, 'in_review_count': my_review_qs.count(), 'display_more': display_more, + 'my_reviewed': my_reviewed, + 'display_more_reviewed': display_more_reviewed, + 'filter': filterset, } - # Reviewer's reviewed submissions for 'Previous reviews' block + return render(request, 'dashboard/reviewer_dashboard.html', context) + + def get_my_reviews(self, user, qs): + my_review_qs = qs.in_review_for(user).order_by('-submit_time') + my_review_table = ReviewerSubmissionsTable(my_review_qs[:5], prefix='my-review-') + display_more = (my_review_qs.count() > 5) + + return my_review_qs, my_review_table, display_more + + def get_my_reviewed(self, request, qs): # Replicating django_filters.views.FilterView my_reviewed_qs = qs.reviewed_by(request.user).order_by('-submit_time') kwargs = { - 'data': self.request.GET or None, - 'request': self.request, - } - kwargs.update({ + 'data': request.GET or None, + 'request': request, 'queryset': my_reviewed_qs, - }) - self.filterset = SubmissionReviewerFilterAndSearch(**kwargs) - my_reviewed_qs = self.filterset.qs + } + filterset = SubmissionReviewerFilterAndSearch(**kwargs) + my_reviewed_qs = filterset.qs - my_reviewed = ReviewerSubmissionsTable(my_reviewed_qs[:5], prefix='my-reviewed-') + my_reviewed_table = ReviewerSubmissionsTable(my_reviewed_qs[:5], prefix='my-reviewed-') display_more_reviewed = (my_reviewed_qs.count() > 5) - context.update({ - 'my_reviewed': my_reviewed, - 'display_more_reviewed': display_more_reviewed, - 'filter': self.filterset, - }) - - return render(request, 'dashboard/reviewer_dashboard.html', context) + return filterset, my_reviewed_qs, my_reviewed_table, display_more_reviewed def get_context_data(self, **kwargs): kwargs = super().get_context_data(**kwargs)