mozreview: don't hide reviewers when viewing drafts (
bug 1276847) r?mars
Instead of hiding all reviewers when viewing a draft, just hide the review
statuses.
MozReview-Commit-ID: LWPWmOEjkZp
--- a/pylib/mozreview/mozreview/review_helpers.py
+++ b/pylib/mozreview/mozreview/review_helpers.py
@@ -72,35 +72,36 @@ def has_l3_shipit(review_request):
if not review.ship_it:
continue
if get_profile(review.user).has_scm_ldap_group('scm_level_3'):
return True
return False
-def get_reviewers_status(review_request, reviewers=None, include_drive_by=False):
+def get_reviewers_status(review_request, reviewers=None,
+ include_drive_by=False):
"""Returns the latest review status for each reviewer.
If include_drive_by is False, only reviewers nominated by the reviewee are
considered. Set it to True to also report the status of `drive_by`
reviewers.
If a list of reviewers is provided, the returned dictionary will contain
those reviewers regardless the value of include_drive_by
"""
- # Don't show any status on drafts.
- if type(review_request) == ReviewRequestDraft:
- return {}
-
designated_reviewers = review_request.target_people.all()
if not reviewers:
reviewers = designated_reviewers
+ # We need to grab the reviews and statuses off the non-draft.
+ if isinstance(review_request, ReviewRequestDraft):
+ review_request = review_request.review_request
+
reviewers_status = dict()
for r in reviewers:
# The initial state is r?
reviewers_status[r.username] = {
'ship_it': False,
'review_flag': 'r?' if r in designated_reviewers else ' ',
}
--- a/pylib/mozreview/mozreview/templates/mozreview/commits.html
+++ b/pylib/mozreview/mozreview/templates/mozreview/commits.html
@@ -53,17 +53,21 @@ This is the template for the "Commits" l
{% comment "TODO: show this column when the commit author will be available" %}
<td>{{ child_details.submitter }}</td>
{% endcomment %}
<td class="reviewers">
<span class="mozreview-child-reviewer-list"
data-id="{{child_details.get_review_request.id}}">
{% for reviewer, status in child_details|reviewers_status %}
{% if not forloop.first %}, {% endif %}
- <span class="reviewer-name{% if status.ship_it %} reviewer-ship-it{% endif %} {{status.review_flag|review_flag_class}}">{{ reviewer }}</span>
+ {% if child_details|isDraft %}
+ <span class="reviewer-name">{{ reviewer }}</span>
+ {% else %}
+ <span class="reviewer-name {% if status.ship_it %}reviewer-ship-it{% endif %} {{status.review_flag|review_flag_class}}">{{ reviewer }}</span>
+ {% endif %}
{% endfor %}
</span>
</td>
<td class="status">
{% if child_details.get_review_request.issue_open_count > 0 %}
<a class="issue-count" href="{{child_details.get_review_request.get_absolute_url}}#issue-summary" title="{{child_details.get_review_request.issue_open_count}} open issues">
<span class="issue-icon">!</span>{{child_details.get_review_request.issue_open_count}}
</a>
--- a/pylib/mozreview/mozreview/templatetags/mozreview.py
+++ b/pylib/mozreview/mozreview/templatetags/mozreview.py
@@ -6,30 +6,40 @@ from django.contrib.auth.models import U
from mozreview.extra_data import (
COMMIT_ID_KEY,
fetch_commit_data,
is_parent,
is_pushed,
)
from mozreview.review_helpers import get_reviewers_status
+from reviewboard.reviews.models import (
+ ReviewRequestDraft,
+)
+
+
register = template.Library()
@register.filter()
def isSquashed(review_request):
return is_parent(review_request)
@register.filter()
def isPush(review_request):
return is_pushed(review_request)
@register.filter()
+def isDraft(review_request):
+ return isinstance(review_request, ReviewRequestDraft)
+
+
+@register.filter()
def commit_id(review_request_details):
"""Return the commit id of a review request or review request draft"""
commit_data = fetch_commit_data(review_request_details)
return str(commit_data.get_for(review_request_details, COMMIT_ID_KEY))
def reviewer_list(review_request):
return ', '.join([user.username
@@ -109,17 +119,18 @@ def ssh_to_https(landing_url):
@register.filter()
def reviewers_status(review_request):
return get_reviewers_status(review_request).items()
@register.filter()
def reviewer_status_with_drive_by(review_request, reviewer):
- reviewer_status = get_reviewers_status(review_request, reviewers=[reviewer],
+ reviewer_status = get_reviewers_status(review_request,
+ reviewers=[reviewer],
include_drive_by=True)
return reviewer_status[reviewer.username]
@register.filter()
def userid_to_user(user_id):
try:
return User.objects.get(pk=user_id)