MozReview: Review Page Redesign: Created new 'ReviewContentField' class for review main content (Bug 1309964). r?glob,smacleod draft
authorDavid Walsh <dwalsh@mozilla.com>
Thu, 27 Oct 2016 11:03:35 -0500
changeset 9802 db9c4cb3a39ad3a31e81af685fee7696372bc696
parent 9801 d626c444b41b2a3ea28941f44f403f4dc215ebbb
push id1330
push userbmo:dwalsh@mozilla.com
push dateThu, 27 Oct 2016 16:52:41 +0000
reviewersglob, smacleod
bugs1309964
MozReview: Review Page Redesign: Created new 'ReviewContentField' class for review main content (Bug 1309964). r?glob,smacleod MozReview-Commit-ID: KdzZG2G4wJr
pylib/mozreview/mozreview/extension.py
pylib/mozreview/mozreview/fields.py
pylib/mozreview/mozreview/static/mozreview/css/mozilla-theme-reviews.less
--- a/pylib/mozreview/mozreview/extension.py
+++ b/pylib/mozreview/mozreview/extension.py
@@ -47,16 +47,17 @@ from mozreview.extra_data import (
 from mozreview.fields import (
     BaseCommitField,
     CombinedReviewersField,
     CommitAuthorField,
     CommitsListField,
     FileDiffReviewerField,
     ImportCommitField,
     PullCommitField,
+    ReviewContentField,
     TryField,
 )
 from mozreview.file_diff_reviewer.resources import (
     file_diff_reviewer_resource,
 )
 from mozreview.hooks import (
     MozReviewApprovalHook,
     MozReviewCommitTableHook,
@@ -311,16 +312,17 @@ class MozReviewExtension(Extension):
                      'mozreview/user-data.html')
         TemplateHook(self, 'base-after-content',
                      'mozreview/repository.html')
         TemplateHook(self, 'base-after-content',
                      'mozreview/user_review_flag.html',
                      apply_to=review_request_url_names)
 
         ReviewRequestFieldsHook(self, 'main', [CommitsListField])
+        ReviewRequestFieldsHook(self, 'main', [ReviewContentField])
         MozReviewCommitTableHook(self, 'base-before-content',
                      'mozreview/commits.html',
                      apply_to=review_request_url_names)
 
         # This forces the Commits field to be the top item.
         main_fieldset.field_classes.insert(0,
                                            main_fieldset.field_classes.pop())
 
--- a/pylib/mozreview/mozreview/fields.py
+++ b/pylib/mozreview/mozreview/fields.py
@@ -87,44 +87,25 @@ class CommitsListField(CommitDataBackedF
     This field is injected in the details of a review request that
     is a "push" based review request.
     """
     field_id = COMMITS_KEY
     label = _("Commits")
 
     can_record_change_entry = True
 
+    def should_render(self, value):
+        return False
+
     def has_value_changed(self, old_value, new_value):
         # Just to be safe, we de-serialize the json and compare values
         if old_value is not None and new_value is not None:
             return json.loads(old_value) != json.loads(new_value)
         return old_value != new_value
 
-    def should_render(self, value):
-        return is_pushed(self.review_request_details)
-
-    def as_html(self):
-        user = self.request.user
-        parent = get_parent_rr(self.review_request_details.get_review_request())
-        parent_details = parent.get_draft(user) or parent
-
-        # If a user can view the parent draft they should also have
-        # permission to view every child. We check if the child is
-        # accessible anyways in case it has been restricted for other
-        # reasons.
-        children_details = [
-            child for child in gen_child_rrs(parent_details, user=user)
-            if child.is_accessible_by(user)]
-
-        return get_template('mozreview/review-main.html').render(Context({
-            'review_request_details': self.review_request_details,
-            'parent_details': parent_details,
-            'user': user
-        }))
-
     def render_change_entry_html(self, info):
         old_value = json.loads(info.get('old', ['[]'])[0])
         old_commits = [c for c, r in old_value]
 
         new_value = json.loads(info.get('new', ['[]'])[0])
         new_commits = [c for c, r in new_value]
 
         # Pad the commit lists so they're equal in length.
@@ -212,16 +193,44 @@ class PullCommitField(BaseReviewRequestF
             return ''
 
         return get_template('mozreview/hg-pull.html').render(Context({
                 'commit_id': commit_id,
                 'repo_path': repo_path,
         }))
 
 
+class ReviewContentField(BaseReviewRequestField):
+
+    label = _("Commit Detail")
+    field_id = "p2rb.CommitDetail"
+
+    def should_render(self, value):
+        return is_pushed(self.review_request_details)
+
+    def as_html(self):
+        user = self.request.user
+        parent = get_parent_rr(self.review_request_details.get_review_request())
+        parent_details = parent.get_draft(user) or parent
+
+        # If a user can view the parent draft they should also have
+        # permission to view every child. We check if the child is
+        # accessible anyways in case it has been restricted for other
+        # reasons.
+        children_details = [
+            child for child in gen_child_rrs(parent_details, user=user)
+            if child.is_accessible_by(user)]
+
+        return get_template('mozreview/review-main.html').render(Context({
+            'review_request_details': self.review_request_details,
+            'parent_details': parent_details,
+            'user': user
+        }))
+
+
 class CommitAuthorField(CommitDataBackedField):
     """Field for the author of the review request's commit"""
     field_id = AUTHOR_KEY
     label = _("Author")
 
     def should_render(self, value):
         # Only show this for child review requests as for parent review
         # requests different constituent commits can have different authors.
--- a/pylib/mozreview/mozreview/static/mozreview/css/mozilla-theme-reviews.less
+++ b/pylib/mozreview/mozreview/static/mozreview/css/mozilla-theme-reviews.less
@@ -17,17 +17,17 @@
 
   .content .field-container > pre {
     font-family: inherit;
     border: 0;
     padding: 0;
     font-size: 90%;
   }
 
-  .header, label[for="field_p2rb.commits"] {
+  .header, label[for="field_p2rb.commits"], label[for="field_p2rb.CommitDetail"] {
     display: none;
   }
 }
 
 #mozreview-review-content {
   text-align: center;
 
   h1 {