From b64b1dff44d917641d9ee31bf52e5d383012ef28 Mon Sep 17 00:00:00 2001
From: Fredrik Jonsson <frjo@xdeb.org>
Date: Mon, 3 Jun 2019 21:25:39 +0200
Subject: [PATCH] Set AssigneReviewers correctly on new submissions. Show
 review button.

---
 opentech/apply/funds/models/submissions.py        | 11 ++++++++---
 opentech/apply/review/templatetags/review_tags.py |  2 +-
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/opentech/apply/funds/models/submissions.py b/opentech/apply/funds/models/submissions.py
index 661bb355b..1305c8d03 100644
--- a/opentech/apply/funds/models/submissions.py
+++ b/opentech/apply/funds/models/submissions.py
@@ -609,7 +609,7 @@ class ApplicationSubmission(
         if creating:
             self.process_file_data(files)
             for reviewer in self.get_from_parent('reviewers').all():
-                AssignedReviewers.objects.create(
+                AssignedReviewers.objects.get_or_create_for_user(
                     reviewer=reviewer,
                     submission=self
                 )
@@ -830,6 +830,11 @@ class AssignedReviewersQuerySet(models.QuerySet):
             Q(Q(review__isnull=False) & Q(review__is_draft=False))
         ).distinct()
 
+    def draft_reviewed(self):
+        return self.filter(
+            Q(Q(review__isnull=False) & Q(review__is_draft=True))
+        ).distinct()
+
     def not_reviewed(self):
         return self.filter(
             Q(review__isnull=True) | Q(review__is_draft=True),
@@ -853,12 +858,12 @@ class AssignedReviewersQuerySet(models.QuerySet):
                 groups = {PARTNER_GROUP_NAME}
             elif COMMUNITY_REVIEWER_GROUP_NAME in groups:
                 groups = {COMMUNITY_REVIEWER_GROUP_NAME}
-            elif review.author.is_apply_staff:
+            elif reviewer.author.is_apply_staff:
                 groups = {STAFF_GROUP_NAME}
             else:
                 groups = {REVIEWER_GROUP_NAME}
         elif not groups:
-            if assigned.reviewer.is_staff or assigned.reviewer.is_superuser:
+            if reviewer.is_staff or reviewer.is_superuser:
                 groups = {STAFF_GROUP_NAME}
             else:
                 groups = {REVIEWER_GROUP_NAME}
diff --git a/opentech/apply/review/templatetags/review_tags.py b/opentech/apply/review/templatetags/review_tags.py
index e5ef985c5..eb16d09fd 100644
--- a/opentech/apply/review/templatetags/review_tags.py
+++ b/opentech/apply/review/templatetags/review_tags.py
@@ -39,4 +39,4 @@ def can_review(user, submission):
 
 @register.filter
 def has_draft(user, submission):
-    return submission.can_review(user) and submission.reviews.filter(author=user, is_draft=True).exists()
+    return submission.can_review(user) and submission.assigned.draft_reviewed().filter(reviewer=user).exists()
-- 
GitLab