mozreview: don't hide reviewers when viewing drafts (bug 1276847) r?mars draft
authorbyron jones <glob@mozilla.com>
Tue, 31 May 2016 14:41:28 +0800
changeset 8249 0682ecb8785dd2f90e275449102e535ac52535eb
parent 8242 55e6f10e36d4f68a857a796dbade8ca9ae36e382
push id883
push userbjones@mozilla.com
push dateTue, 31 May 2016 16:48:50 +0000
reviewersmars
bugs1276847
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
pylib/mozreview/mozreview/review_helpers.py
pylib/mozreview/mozreview/templates/mozreview/commits.html
pylib/mozreview/mozreview/templatetags/mozreview.py
--- 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)