Skip to content
Snippets Groups Projects
Commit 7c9ecf41 authored by Erin Mullaney's avatar Erin Mullaney Committed by Todd Dembrey
Browse files

#962 review block: don't show _not_reviewed authors if they have left an...

#962 review block: don't show _not_reviewed authors if they have left an opinion, display opinions for all types of reviews.
parent d17fa1d4
No related branches found
No related tags found
No related merge requests found
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
{% if reviews_block.external_reviewed or reviews_block.external_not_reviewed %} {% if reviews_block.external_reviewed or reviews_block.external_not_reviewed %}
{% for review_data in reviews_block.external_reviewed %} {% for review_data in reviews_block.external_reviewed %}
{% include 'funds/includes/review_table_row.html' with review=review_data.review reviewer=review_data.reviewer %} {% include 'funds/includes/review_table_row.html' with review=review_data.review reviewer=review_data.reviewer opinions=review_data.opinions %}
{% endfor %} {% endfor %}
{% for review_data in reviews_block.external_not_reviewed %} {% for review_data in reviews_block.external_not_reviewed %}
......
...@@ -16,6 +16,7 @@ from opentech.apply.review.blocks import RecommendationBlock, RecommendationComm ...@@ -16,6 +16,7 @@ from opentech.apply.review.blocks import RecommendationBlock, RecommendationComm
from opentech.apply.review.forms import ReviewModelForm, ReviewOpinionForm from opentech.apply.review.forms import ReviewModelForm, ReviewOpinionForm
from opentech.apply.stream_forms.models import BaseStreamForm from opentech.apply.stream_forms.models import BaseStreamForm
from opentech.apply.users.decorators import staff_required from opentech.apply.users.decorators import staff_required
from opentech.apply.users.models import User
from opentech.apply.utils.views import CreateOrUpdateView from opentech.apply.utils.views import CreateOrUpdateView
from .models import Review from .models import Review
...@@ -30,44 +31,49 @@ class ReviewContextMixin: ...@@ -30,44 +31,49 @@ class ReviewContextMixin:
for review in reviews: for review in reviews:
reviews_dict[review.author.pk] = review reviews_dict[review.author.pk] = review
# Get all the authors of opinions, these authors should not show up in the 'xxx_not_reviewed' lists
opinion_authors = set(User.objects.filter(
pk__in=ReviewOpinion.objects.filter(review__submission=self.object).values('author__pk')))
reviews_block = defaultdict(list) reviews_block = defaultdict(list)
for assigned_reviewer in assigned: for assigned_reviewer in assigned:
reviewer = assigned_reviewer.reviewer reviewer = assigned_reviewer.reviewer
role = assigned_reviewer.role role = assigned_reviewer.role
review = reviews_dict.get(reviewer.pk, None) review = reviews_dict.get(reviewer.pk, None)
key = None
if role: if role:
if review: if review:
key = 'role_reviewed' key = 'role_reviewed'
else: elif reviewer not in opinion_authors:
key = 'role_not_reviewed' key = 'role_not_reviewed'
elif reviewer.is_apply_staff: elif reviewer.is_apply_staff:
if review: if review:
key = 'staff_reviewed' key = 'staff_reviewed'
else: elif review not in opinion_authors:
key = 'staff_not_reviewed' key = 'staff_not_reviewed'
else: else:
if review: if review:
key = 'external_reviewed' key = 'external_reviewed'
else: elif review not in opinion_authors:
key = 'external_not_reviewed' key = 'external_not_reviewed'
if key: # Do not add this reviewer to any list if they haven't reviewed but have left an opinion
review_info_dict = { review_info_dict = {
'reviewer': reviewer, 'reviewer': reviewer,
'review': review, 'review': review,
'role': role, 'role': role,
} }
opinions_list = [] opinions_list = []
if review and review.opinions: if review and review.opinions:
for opinion in review.opinions.all(): for opinion in review.opinions.all():
author_role = self.object.assigned.with_roles().filter(reviewer=opinion.author).first() author_role = self.object.assigned.with_roles().filter(reviewer=opinion.author).first()
role = author_role.role if author_role else None role = author_role.role if author_role else None
opinions_list.append({ opinions_list.append({
'author': opinion.author, 'author': opinion.author,
'opinion': opinion.get_opinion_display(), 'opinion': opinion.get_opinion_display(),
'role': role, 'role': role,
}) })
review_info_dict['opinions'] = opinions_list review_info_dict['opinions'] = opinions_list
reviews_block[key].append(review_info_dict) reviews_block[key].append(review_info_dict)
# Calculate the recommendation based on role and staff reviews # Calculate the recommendation based on role and staff reviews
recommendation = self.object.reviews.by_staff().recommendation() recommendation = self.object.reviews.by_staff().recommendation()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment