From 9d213db65b09a0462ad6893c0c403ca3c7d7a61b Mon Sep 17 00:00:00 2001
From: Fredrik Jonsson <frjo@xdeb.org>
Date: Tue, 12 May 2020 09:45:02 +0200
Subject: [PATCH] Use UserPassesTestMixin for ReviewLeaderboard.

---
 hypha/apply/funds/views.py | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/hypha/apply/funds/views.py b/hypha/apply/funds/views.py
index 9b951f00c..7c232b945 100644
--- a/hypha/apply/funds/views.py
+++ b/hypha/apply/funds/views.py
@@ -1187,21 +1187,12 @@ class SubmissionResultView(FilterView):
 
 
 @method_decorator(login_required, name='dispatch')
-class ReviewLeaderboard(SingleTableMixin, FilterView):
+class ReviewLeaderboard(UserPassesTestMixin, SingleTableMixin, FilterView):
     filterset_class = LeaderboardFilter
     table_class = LeaderboardTable
     table_pagination = False
     template_name = 'funds/review_leaderboard.html'
 
-    def dispatch(self, request, *args, **kwargs):
-        is_staff = request.user.is_apply_staff
-        is_reviewer = request.user.is_reviewer
-
-        if not (is_staff or is_reviewer):
-            raise PermissionDenied
-
-        return super().dispatch(request, *args, **kwargs)
-
     def get_table_data(self):
         ninety_days_ago = timezone.now() - timedelta(days=90)
         this_year = timezone.now().year
@@ -1214,3 +1205,6 @@ class ReviewLeaderboard(SingleTableMixin, FilterView):
             last_year=Count('assignedreviewers__review', filter=Q(assignedreviewers__review__created_at__year=last_year)),
             # most_recent=Subquery(latest_reviews.values('id')[:1])
         )
+
+    def test_func(self):
+        return self.request.user.is_apply_staff or self.request.user.is_reviewer
-- 
GitLab