diff --git a/opentech/apply/funds/models/submissions.py b/opentech/apply/funds/models/submissions.py index 661bb355b493215643e8dd2fd83a20f70c565a16..1305c8d03385812c5c8b756f1f23c3064596b2c2 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 e5ef985c5bb9a148cb20a60a4aaccf07593dba08..eb16d09fd466d7415596d17d255aaae035c643d6 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()