• 
      

    Add visual indicators to new page entries and new comments, in order to highlight active/new discussions.

    Review Request #8673 — Created Jan. 28, 2017 and discarded

    Information

    Review Board
    master

    Reviewers

    On review requests, it can be difficult to discern new discussion from the old. This particularly pertains to finding new reviews and new comments on review requests with a lot of discussion.

    This set of changes adds visual indicators/highlighting to all page entries and all comments that were posted since the user last visited the review request.

    It essentially does this by adding reviews and comments to a CSS class if they were posted since the user last visited the review request. It then applies the visual indicators to the page using only LessCSS.

    • Checked if last_visited is passed down to the appropriate templates correctly.
    • Checked if the new-page-entry class and the new-comment class are applied when the conditional is true.
    • Checked if the page is updated with the correct styling when page-entries and comments are newer than last_visited (ie. indicators are added).
    • Checked if the visual indicators are removed when page-entries and comments are older than last_visited (ie. page refreshed on a page with page-entries/comments with the indicators).
    • Checked if the visual indicators are added and removed correctly in spite of any caching that might happen (ie. caching does not interfere with addition/removal).
    • Ran unit tests for checking if new-page-entry and new-comment are both added and removed correctly.

    Description From Last Updated

    I think if both the review and replies are new, we can just leave the whole box shaded and avoid …

    daviddavid

    Col: 5 E265 block comment should start with '# '

    reviewbotreviewbot

    Col: 5 E265 block comment should start with '# '

    reviewbotreviewbot

    Col: 80 E501 line too long (116 > 79 characters)

    reviewbotreviewbot

    Col: 114 E202 whitespace before ')'

    reviewbotreviewbot

    Col: 77 W291 trailing whitespace

    reviewbotreviewbot

    Col: 9 E128 continuation line under-indented for visual indent

    reviewbotreviewbot

    Col: 74 W291 trailing whitespace

    reviewbotreviewbot

    Undo this change.

    brenniebrennie

    No newline here.

    brenniebrennie

    CSS selectors should be ordered as: &.foo {} a {} .foo {} #foo{} Within each group the selectors should be …

    brenniebrennie

    I do not know that this comment. is necessary.

    brenniebrennie

    Alphabetize.

    brenniebrennie

    The draft rendering and the new-comment rendering should be mutually exclusive. Additionally, producing an element with two different class= attribtues …

    brenniebrennie

    This line looks like it got unintentionally indented 1 space.

    daviddavid

    It doesn't seem useful to have separate definitions for entry and comment which are the same. Can we merge these?

    daviddavid

    The #reviews .review-request-page-entry part can be consolidated, like: #reviews .review-request-page-entry { &.new-page-entry { ... } &:not(.new-page-entry) { ... } }

    chipx86chipx86

    The 4px should also be in a constant.

    chipx86chipx86

    What's this here for?

    chipx86chipx86

    Maybe when wrapping and using multiple keyword arguments, you can have one keyword argument per line since there are lots …

    RK rkdhatt

    'FileAttachment' imported but unused

    reviewbotreviewbot

    'Screenshot' imported but unused

    reviewbotreviewbot

    'ReviewRequest' imported but unused

    reviewbotreviewbot

    'ReviewRequestDraft' imported but unused

    reviewbotreviewbot

    For unit test descriptions (modern ones, anyway), we try to start off with the component/page that's being tested, followed by …

    chipx86chipx86

    self.client.login will return the user, so you can use that directly. Same below.

    chipx86chipx86

    These can be one statement. Same below.

    chipx86chipx86

    local variable 'review' is assigned to but never used

    reviewbotreviewbot

    Older tests don't do this, but we should actually use local_site_reverse to get the URL instead of hard-coding it. Also, …

    chipx86chipx86

    It would be better to check for something more specific here (and below), since "new-page-entry" could theoretically be anywhere.

    chipx86chipx86

    Can you wrap the comparison in parenthesis? Helps to visually distinguish those.

    chipx86chipx86

    Let's put the ( on the line with the format strings. That way, all entries have a nice 4 space …

    chipx86chipx86

    Can you add a comment about this? I know we talked about this a bit, but wouldn't we want this …

    chipx86chipx86

    There's actually a little template tag you can use here for the class building: <li{% attr "class" %}{% if draft …

    chipx86chipx86

    'FileAttachment' imported but unused

    reviewbotreviewbot

    'ReviewRequestDraft' imported but unused

    reviewbotreviewbot

    'ReviewRequest' imported but unused

    reviewbotreviewbot

    'Screenshot' imported but unused

    reviewbotreviewbot

    Col: 80 E501 line too long (80 > 79 characters)

    reviewbotreviewbot

    Col: 80 E501 line too long (80 > 79 characters)

    reviewbotreviewbot

    'FileAttachment' imported but unused

    reviewbotreviewbot

    'ReviewRequestDraft' imported but unused

    reviewbotreviewbot

    'ReviewRequest' imported but unused

    reviewbotreviewbot

    'Screenshot' imported but unused

    reviewbotreviewbot

    I would use docstring comment here (triple quotes)

    MO Mons

    maybe you should remove this blank line (unless that's the style guideline used elsewhere)

    MO Mons

    I like the fact that you put these on new lines. Makes it more readable in my opinion.

    MO Mons

    I would add a new blank line here. Seems like that's the general style in this file (blank line after …

    MO Mons

    is it possible to split this div into two lines?

    MO Mons

    same here.

    MO Mons

    is it possible to split this li tag into two lines?

    MO Mons

    'FileAttachment' imported but unused

    reviewbotreviewbot

    'Screenshot' imported but unused

    reviewbotreviewbot

    'ReviewRequest' imported but unused

    reviewbotreviewbot

    'ReviewRequestDraft' imported but unused

    reviewbotreviewbot

    We prefer to format formatting statements like this as : text = ( ' .... ' % foo )

    brenniebrennie

    Same here.

    brenniebrennie

    And here.

    brenniebrennie

    Here too.

    brenniebrennie

    ETag

    brenniebrennie

    'FileAttachment' imported but unused

    reviewbotreviewbot

    'ReviewRequestDraft' imported but unused

    reviewbotreviewbot

    'ReviewRequest' imported but unused

    reviewbotreviewbot

    'Screenshot' imported but unused

    reviewbotreviewbot

    'FileAttachment' imported but unused

    reviewbotreviewbot

    'ReviewRequestDraft' imported but unused

    reviewbotreviewbot

    'ReviewRequest' imported but unused

    reviewbotreviewbot

    'Screenshot' imported but unused

    reviewbotreviewbot

    'FileAttachment' imported but unused

    reviewbotreviewbot

    'search' imported but unused

    reviewbotreviewbot

    Col: 17 E126 continuation line over-indented for hanging indent

    reviewbotreviewbot

    Col: 17 E126 continuation line over-indented for hanging indent

    reviewbotreviewbot

    Col: 17 E126 continuation line over-indented for hanging indent

    reviewbotreviewbot

    Col: 17 E126 continuation line over-indented for hanging indent

    reviewbotreviewbot
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/templates/reviews/review_reply.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/templates/reviews/review_reply.html
      
      
    2. Show all issues
      Col: 5
       E265 block comment should start with '# '
      
    3. Show all issues
      Col: 5
       E265 block comment should start with '# '
      
    4. reviewboard/reviews/views.py (Diff revision 1)
       
       
      Show all issues
      Col: 80
       E501 line too long (116 > 79 characters)
      
    5. reviewboard/reviews/views.py (Diff revision 1)
       
       
      Show all issues
      Col: 114
       E202 whitespace before ')'
      
    6. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/templates/reviews/review_reply.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/templates/reviews/review_reply.html
      
      
    2. reviewboard/reviews/views.py (Diff revision 2)
       
       
      Show all issues
      Col: 77
       W291 trailing whitespace
      
    3. reviewboard/reviews/views.py (Diff revision 2)
       
       
      Show all issues
      Col: 9
       E128 continuation line under-indented for visual indent
      
    4. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/templates/reviews/review_reply.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/templates/reviews/review_reply.html
      
      
    2. reviewboard/reviews/views.py (Diff revision 3)
       
       
      Show all issues
      Col: 74
       W291 trailing whitespace
      
    3. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. 
        
    brennie
    1. 
        
    2. Show all issues

      Undo this change.

    3. Show all issues

      No newline here.

    4. reviewboard/static/rb/css/pages/reviews.less (Diff revision 5)
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
      Show all issues

      CSS selectors should be ordered as:

      &.foo {}
      a {}
      .foo {}
      #foo{}
      

      Within each group the selectors should be ordered alphabetically.

    5. Show all issues

      I do not know that this comment. is necessary.

    6. Show all issues

      Alphabetize.

    7. Show all issues

      The draft rendering and the new-comment rendering should be mutually exclusive. Additionally, producing an element with two different class= attribtues is not valid. Move the class attribute generation into an if-elif.

    8. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. 
        
    brennie
    1. Ship It!
    2. 
        
    david
    1. 
        
    2. Show all issues

      I think if both the review and replies are new, we can just leave the whole box shaded and avoid the extra border in the middle.

    3. Show all issues

      This line looks like it got unintentionally indented 1 space.

    4. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. 
        
    david
    1. 
        
    2. reviewboard/static/rb/css/pages/reviews.less (Diff revision 7)
       
       
       
       
       
      Show all issues

      It doesn't seem useful to have separate definitions for entry and comment which are the same. Can we merge these?

      1. This was intentional, for the future in the case when someone wanted to set them each to different colours.

        But you're right, that doesn't seem very useful, especially when we don't need it right now.

    3. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. 
        
    chipx86
    1. 
        
    2. reviewboard/static/rb/css/pages/reviews.less (Diff revision 8)
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
      Show all issues

      The #reviews .review-request-page-entry part can be consolidated, like:

      #reviews .review-request-page-entry {
          &.new-page-entry {
              ...
          }
      
          &:not(.new-page-entry) {
              ...
          }
      }
      
    3. Show all issues

      The 4px should also be in a constant.

    4. Show all issues

      What's this here for?

      1. I put this here because setting clear: both (which is done in #reviews .review .body) causes a gap between the header and footer of reviews. This isn't normally visible, but adding a left border to both .header and .body shows the gap.

        There are no visible differences I can see when I set this to clear: none, besides the gap disappearing. It might be legacy thing. However, I should have brought this up earlier, this isn't the best solution.

        Is there a better way to do this?

      2. Can you show me in Slack what it looks like with/without this, so I can get a better idea of its impact?

        Also, can you check in mobile mode? (Resize your browser to be smaller, width-wise, or go into the developer tools' Responsive Design Mode.) It may be that we have this for that purpose.

    5. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. 
        
    RK
    1. 
        
    2. reviewboard/reviews/views.py (Diff revision 9)
       
       
      Show all issues

      Maybe when wrapping and using multiple keyword arguments, you can have one keyword argument per line since there are lots of arguments (better readability).

      ex:
      etag = encode_tag(
      '%s:%s:%s:%s:%s:%s:%s:%s:%s:%s:%s' %
      request.user,
      last_activity_time,
      draft_timestamp,
      ...
      )

      1. I agree with that point - though I wouldn't necessarily put the '%s...' string on a next line, like in the example above.

      2. Holy smokes, ignore my last comment about putting the %s... string on the next line. I didn't realize it was already that way (and properly indented the 4 spaces).

        So please ignore my comment there. But I do support the idea of breaking up the individual elements being inserted into the string onto their own lines.

      3. Thanks for the feedback, guys!

        I did not format everything according to Raman's example, but I did put each argument on its own line.

        Mike, it seems that the '%s:%s... was NOT indented 4 spaces. It was indented 3 spaces for whatever reason. That's been corrected now.

    3. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. reviewboard/reviews/tests/test_views.py (Diff revision 11)
       
       
      Show all issues
       'FileAttachment' imported but unused
      
    3. reviewboard/reviews/tests/test_views.py (Diff revision 11)
       
       
      Show all issues
       'Screenshot' imported but unused
      
    4. reviewboard/reviews/tests/test_views.py (Diff revision 11)
       
       
      Show all issues
       'ReviewRequest' imported but unused
      
    5. reviewboard/reviews/tests/test_views.py (Diff revision 11)
       
       
      Show all issues
       'ReviewRequestDraft' imported but unused
      
    6. reviewboard/reviews/tests/test_views.py (Diff revision 11)
       
       
      Show all issues
       local variable 'review' is assigned to but never used
      
    7. 
        
    chipx86
    1. This is looking great! Some recommendations for styling and just some conventions we have in our codebase, but this is close to landing!

    2. reviewboard/reviews/tests/test_views.py (Diff revision 11)
       
       
       
      Show all issues

      For unit test descriptions (modern ones, anyway), we try to start off with the component/page that's being tested, followed by the condition. So, something more like: "Testing review_detail view sets new-page-entry CSS class on reviews when ..."

      ("CSS class" helps distinguish from Python classes.)

      There should also be one unit test per condition, so one for ensuring the class is set when it should be, one for ensuring the class is not set when it you've visited since. It's fine to repeat some of the setup logic that may have been covered in another unit test. What having multiple tests ultimately does is help when things go wrong. For instance, if the latter case fails, but the former doesn't, there's less diagnostics that have to happen to know what actually failed.

      Same applies below.

    3. reviewboard/reviews/tests/test_views.py (Diff revision 11)
       
       
       
      Show all issues

      self.client.login will return the user, so you can use that directly.

      Same below.

      1. It is giving me errors when I set

        user = self.client.login(username='doc', password='doc')
        

        instead of what I had originally.

        self.client.login is returning a boolean whether or not the login was successful, rather than the user. That is what the Django docs say: https://docs.djangoproject.com/en/1.10/topics/testing/tools/#django.test.Client.login

        I also printed user to console and I get True.

    4. reviewboard/reviews/tests/test_views.py (Diff revision 11)
       
       
       
       
      Show all issues

      These can be one statement.

      Same below.

    5. reviewboard/reviews/tests/test_views.py (Diff revision 11)
       
       
      Show all issues

      Older tests don't do this, but we should actually use local_site_reverse to get the URL instead of hard-coding it.

      Also, when referencing IDs, you should use .pk instead of .id. With review requests, though, when you're dealing with URLs or for display purposes, you should always use .display_id.

      Same below.

    6. reviewboard/reviews/tests/test_views.py (Diff revision 11)
       
       
      Show all issues

      It would be better to check for something more specific here (and below), since "new-page-entry" could theoretically be anywhere.

    7. reviewboard/reviews/views.py (Diff revision 11)
       
       
      Show all issues

      Can you wrap the comparison in parenthesis? Helps to visually distinguish those.

    8. reviewboard/reviews/views.py (Diff revision 11)
       
       
       
      Show all issues

      Let's put the ( on the line with the format strings. That way, all entries have a nice 4 space indentation.

    9. Show all issues

      Can you add a comment about this?

      I know we talked about this a bit, but wouldn't we want this to actually be in the base CSS for this element, rather than right here? It seems like we'd need to be consistent. Either always have it or never.

      1. Can you clarify what you mean by "the base CSS for this element"? Do you mean #reviews .review .body or do you mean something else?

      2. Yeah, #reviews .review .body. Basically, from the screenshot you showed me, clear: none is needed to solve a visual defect. That means it's either not at all required and there's no reason to clear here (so clear: none is appropriate) or we must clear here to work around something and that thing we're working around will still be broken for new entries (because you're undoing the clear: both). It's either correct to clear in both places, or it's incorrect to clear in both places, but there must be consistency.

        I think we don't need the clear: both that we have in #reviews .review .body. That line has been there a long time, and I believe it's from when we used to show a little Ship It emblem on the top-left of the review. So instead of having clear: none here, just remove the clear: both.

      3. Thanks for the clarification. I agree. It's been removed now.

    10. Show all issues

      There's actually a little template tag you can use here for the class building:

      <li{% attr "class" %}{% if draft %}draft{% elif last_visited <= timestamp %}new-comment{% endif %}{% endattr %} ...>
      

      That will conditionally add the "class" attribute if there's any content to put in it.

    11. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. reviewboard/reviews/tests/test_views.py (Diff revision 12)
       
       
      Show all issues
       'FileAttachment' imported but unused
      
    3. reviewboard/reviews/tests/test_views.py (Diff revision 12)
       
       
      Show all issues
       'ReviewRequestDraft' imported but unused
      
    4. reviewboard/reviews/tests/test_views.py (Diff revision 12)
       
       
      Show all issues
       'ReviewRequest' imported but unused
      
    5. reviewboard/reviews/tests/test_views.py (Diff revision 12)
       
       
      Show all issues
       'Screenshot' imported but unused
      
    6. reviewboard/reviews/tests/test_views.py (Diff revision 12)
       
       
      Show all issues
      Col: 80
       E501 line too long (80 > 79 characters)
      
    7. reviewboard/reviews/tests/test_views.py (Diff revision 12)
       
       
      Show all issues
      Col: 80
       E501 line too long (80 > 79 characters)
      
    8. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. reviewboard/reviews/tests/test_views.py (Diff revision 13)
       
       
      Show all issues
       'FileAttachment' imported but unused
      
    3. reviewboard/reviews/tests/test_views.py (Diff revision 13)
       
       
      Show all issues
       'ReviewRequestDraft' imported but unused
      
    4. reviewboard/reviews/tests/test_views.py (Diff revision 13)
       
       
      Show all issues
       'ReviewRequest' imported but unused
      
    5. reviewboard/reviews/tests/test_views.py (Diff revision 13)
       
       
      Show all issues
       'Screenshot' imported but unused
      
    6. 
        
    MO
    1. 
        
    2. reviewboard/reviews/tests/test_views.py (Diff revision 13)
       
       
      Show all issues

      I would use docstring comment here (triple quotes)

      1. I thought docstrings were only for "public modules, functions, classes, and methods" (from https://www.python.org/dev/peps/pep-0008/#documentation-strings)?

        This is a block comment, so I think using only #'s works here.

    3. reviewboard/reviews/views.py (Diff revision 13)
       
       
      Show all issues

      maybe you should remove this blank line (unless that's the style guideline used elsewhere)

    4. reviewboard/reviews/views.py (Diff revision 13)
       
       
      Show all issues

      I like the fact that you put these on new lines. Makes it more readable in my opinion.

      1. Thank Raman! This was her suggestion! :)

    5. Show all issues

      I would add a new blank line here. Seems like that's the general style in this file (blank line after a multiline comment).

    6. Show all issues

      is it possible to split this div into two lines?

      1. I don't think we're concerned with any character limit for each line when it comes to HTML. There are a lot of other templates that have even longer elements on some lines.

    7. Show all issues

      same here.

    8. Show all issues

      is it possible to split this li tag into two lines?

    9. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. reviewboard/reviews/tests/test_views.py (Diff revision 14)
       
       
      Show all issues
       'FileAttachment' imported but unused
      
    3. reviewboard/reviews/tests/test_views.py (Diff revision 14)
       
       
      Show all issues
       'Screenshot' imported but unused
      
    4. reviewboard/reviews/tests/test_views.py (Diff revision 14)
       
       
      Show all issues
       'ReviewRequest' imported but unused
      
    5. reviewboard/reviews/tests/test_views.py (Diff revision 14)
       
       
      Show all issues
       'ReviewRequestDraft' imported but unused
      
    6. 
        
    brennie
    1. 
        
    2. reviewboard/reviews/tests/test_views.py (Diff revision 14)
       
       
       
      Show all issues

      We prefer to format formatting statements like this as :

      text = (
          ' .... '
          % foo
      )
      
    3. reviewboard/reviews/tests/test_views.py (Diff revision 14)
       
       
       
      Show all issues

      Same here.

    4. reviewboard/reviews/tests/test_views.py (Diff revision 14)
       
       
       
      Show all issues

      And here.

    5. reviewboard/reviews/tests/test_views.py (Diff revision 14)
       
       
       
      Show all issues

      Here too.

    6. reviewboard/reviews/views.py (Diff revision 14)
       
       
      Show all issues

      ETag

    7. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. reviewboard/reviews/tests/test_views.py (Diff revision 15)
       
       
      Show all issues
       'FileAttachment' imported but unused
      
    3. reviewboard/reviews/tests/test_views.py (Diff revision 15)
       
       
      Show all issues
       'ReviewRequestDraft' imported but unused
      
    4. reviewboard/reviews/tests/test_views.py (Diff revision 15)
       
       
      Show all issues
       'ReviewRequest' imported but unused
      
    5. reviewboard/reviews/tests/test_views.py (Diff revision 15)
       
       
      Show all issues
       'Screenshot' imported but unused
      
    6. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. reviewboard/reviews/tests/test_views.py (Diff revision 16)
       
       
      Show all issues
       'FileAttachment' imported but unused
      
    3. reviewboard/reviews/tests/test_views.py (Diff revision 16)
       
       
      Show all issues
       'ReviewRequestDraft' imported but unused
      
    4. reviewboard/reviews/tests/test_views.py (Diff revision 16)
       
       
      Show all issues
       'ReviewRequest' imported but unused
      
    5. reviewboard/reviews/tests/test_views.py (Diff revision 16)
       
       
      Show all issues
       'Screenshot' imported but unused
      
    6. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. reviewboard/reviews/tests/test_views.py (Diff revision 17)
       
       
      Show all issues
       'FileAttachment' imported but unused
      
    3. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. reviewboard/reviews/tests/test_views.py (Diff revision 19)
       
       
      Show all issues
       'search' imported but unused
      
    3. reviewboard/reviews/tests/test_views.py (Diff revision 19)
       
       
      Show all issues
      Col: 17
       E126 continuation line over-indented for hanging indent
      
    4. reviewboard/reviews/tests/test_views.py (Diff revision 19)
       
       
      Show all issues
      Col: 17
       E126 continuation line over-indented for hanging indent
      
    5. reviewboard/reviews/tests/test_views.py (Diff revision 19)
       
       
      Show all issues
      Col: 17
       E126 continuation line over-indented for hanging indent
      
    6. reviewboard/reviews/tests/test_views.py (Diff revision 19)
       
       
      Show all issues
      Col: 17
       E126 continuation line over-indented for hanging indent
      
    7. 
        
    szhang
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/tests/test_views.py
          reviewboard/reviews/templatetags/reviewtags.py
      
      Ignored Files:
          reviewboard/templates/reviews/boxes/review.html
          reviewboard/static/rb/css/pages/reviews.less
          reviewboard/templates/reviews/review_reply.html
          reviewboard/templates/reviews/boxes/change.html
      
      
    2. 
        
    chipx86
    Review request changed
    Status:
    Discarded
    Change Summary:

    Superceded by https://reviews.reviewboard.org/r/9182/