• 
      

    Ability to update attachments

    Review Request #5824 — Created May 24, 2014 and discarded

    Information

    Review Board
    800

    Reviewers

    This review allows users to update attachments with new version. See https://reviewboard.hackpad.com/Reviewing-attachments-tbfh4oiwTHB for description or https://www.youtube.com/watch?v=anX_rQKWSp0 for a quick demo.

    Review includes:
    * Change to a schema to track sequences of file attachments
    * Modified attachment creation code to correctly assign the new parameters
    * Modified display logic to only show the latest element of each attachment sequence
    * Modified attachment review pages to include the slider

    This review is aimed at project branch (see testing section for the problems description)

    Performed various scenarios of adding/updating/reviewing attachments.

    Current problems:
    * There is no beautiful UI
    * We are reloading the page each time slider is changed - API should be extended to load the necessary data dynamically.

    Description From Last Updated

    As per last week's meeting, we need to stick to existing terminolgoy as best as possible, instead of inventing new …

    chipx86chipx86

    'Max' imported but unused

    reviewbotreviewbot

    Col: 72 E502 the backslash is redundant between brackets

    reviewbotreviewbot

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

    reviewbotreviewbot

    Col: 1 E302 expected 2 blank lines, found 1

    reviewbotreviewbot

    Col: 1 E302 expected 2 blank lines, found 1

    reviewbotreviewbot

    Col: 61 E211 whitespace before '['

    reviewbotreviewbot

    list comprehension redefines 'file_attachment' from line 574

    reviewbotreviewbot

    Col: 17 E122 continuation line missing indentation or outdented

    reviewbotreviewbot

    Col: 61 E211 whitespace before '['

    reviewbotreviewbot

    list comprehension redefines 'file_attachment' from line 574

    reviewbotreviewbot

    Col: 17 E122 continuation line missing indentation or outdented

    reviewbotreviewbot

    Col: 61 E211 whitespace before '['

    reviewbotreviewbot

    'FileAttachmentHistory' imported but unused

    reviewbotreviewbot

    list comprehension redefines 'file_attachment' from line 576

    reviewbotreviewbot

    Instead of using FileAttachment.objects.filter(attachment_history=attachment_history), you can follow the reverse field (note that this particular code needs the related_name change I …

    daviddavid

    Why not just use the FileAttachmentHistory's id field as the display position? It's already a unique integer which is auto-incremented …

    daviddavid

    Col: 17 E122 continuation line missing indentation or outdented

    reviewbotreviewbot

    We use trailing commas for lists and dicts in python.

    daviddavid

    Care to add related_name='file_attachments' here?

    daviddavid

    If you set default=0, you don't have to set it when creating attachments that don't use an existing FileAttachmentHistory

    daviddavid

    This can follow the backwards relationship too: return self.file_attachments.count() - 1 Why don't you consider the first uploaded file to …

    daviddavid

    I think it's worth creating a method on FileAttachmentHistory to return the latest revision.

    daviddavid

    Col: 61 E211 whitespace before '['

    reviewbotreviewbot

    Can you add a docstring?

    daviddavid

    These can be combined and made more efficient using sorted: return sorted(self.get_latest_file_attachments(), key=get_display_position)

    daviddavid

    'FileAttachmentHistory' imported but unused

    reviewbotreviewbot

    Care to just put this in the dict definition for context_data? It's not worth defining a variable unless we use …

    daviddavid

    list comprehension redefines 'file_attachment' from line 576

    reviewbotreviewbot

    Same here.

    daviddavid

    This can use the backwards relationship.

    daviddavid

    Should have a trailing comma.

    daviddavid

    I think it might be nice to pull out the upload file view into a separate change. You already have …

    daviddavid

    It looks like 'e' isn't used in here, which will make jshint unhappy. Can you just remove it from the …

    daviddavid

    These can be simplified: this.$el.html('<div id="revision_selector" />');

    daviddavid

    Can you make this use /* */, since it's a multi-line comment?

    daviddavid

    Alignment is funky here.

    daviddavid

    This also needs to take into account the local site name and SITE_ROOT.

    daviddavid

    Leftover debug output?

    daviddavid

    If you put the review request into a variable in the containing method, you could just use it here without …

    daviddavid

    We generally put the space at the end of the first line instead of the beginning of the second.

    daviddavid

    This can use the reverse relation.

    daviddavid

    Col: 56 E251 unexpected spaces around keyword / parameter equals

    reviewbotreviewbot

    Col: 58 E251 unexpected spaces around keyword / parameter equals

    reviewbotreviewbot

    Col: 63 E502 the backslash is redundant between brackets

    reviewbotreviewbot

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

    reviewbotreviewbot

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

    reviewbotreviewbot

    Col: 59 E502 the backslash is redundant between brackets

    reviewbotreviewbot

    Col: 13 E131 continuation line unaligned for hanging indent

    reviewbotreviewbot

    Col: 60 E502 the backslash is redundant between brackets

    reviewbotreviewbot

    Col: 17 E131 continuation line unaligned for hanging indent

    reviewbotreviewbot

    Col: 56 E251 unexpected spaces around keyword / parameter equals

    reviewbotreviewbot

    Col: 58 E251 unexpected spaces around keyword / parameter equals

    reviewbotreviewbot

    Col: 63 E502 the backslash is redundant between brackets

    reviewbotreviewbot

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

    reviewbotreviewbot

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

    reviewbotreviewbot

    Col: 18 E261 at least two spaces before inline comment

    reviewbotreviewbot

    Col: 59 E502 the backslash is redundant between brackets

    reviewbotreviewbot

    Col: 13 E131 continuation line unaligned for hanging indent

    reviewbotreviewbot

    Col: 60 E502 the backslash is redundant between brackets

    reviewbotreviewbot

    Col: 17 E131 continuation line unaligned for hanging indent

    reviewbotreviewbot

    Can this fit on one line?

    PE PeterTran

    Col: 36 E131 continuation line unaligned for hanging indent

    reviewbotreviewbot

    Col: 40 E131 continuation line unaligned for hanging indent

    reviewbotreviewbot

    Is this a tab instead of white space?

    PE PeterTran

    Can this be hyphen-separated for consistency with your classes?

    PE PeterTran

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

    reviewbotreviewbot

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

    reviewbotreviewbot

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

    reviewbotreviewbot

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

    reviewbotreviewbot

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

    reviewbotreviewbot

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

    reviewbotreviewbot
    reviewbot
    1. This is a review from Review Bot.
        Tool: PEP8 Style Checker
        Processed Files:
          reviewboard/attachments/models.py
          reviewboard/attachments/forms.py
        Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
      
      
    2. 
        
    reviewbot
    1. This is a review from Review Bot.
        Tool: Pyflakes
        Processed Files:
          reviewboard/attachments/models.py
          reviewboard/attachments/forms.py
        Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
      
      
    2. 
        
    VO
    reviewbot
    1. This is a review from Review Bot.
        Tool: PEP8 Style Checker
        Processed Files:
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/attachments/forms.py
        Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/templates/reviews/review_request_dlgs.html
      
      
    2. 
        
    reviewbot
    1. This is a review from Review Bot.
        Tool: Pyflakes
        Processed Files:
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/attachments/forms.py
        Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/templates/reviews/review_request_dlgs.html
      
      
    2. 
        
    chipx86
    1. 
        
    2. reviewboard/attachments/models.py (Diff revision 2)
       
       
       
       
      Show all issues

      As per last week's meeting, we need to stick to existing terminolgoy as best as possible, instead of inventing new terminology.

      I strongly believe the right model is:

      1. A attachment_revision field for the revision of the file attachment.
      2. Some way of grouping related attachments (a SHA1 or some other unique identifier, rather than an integer, would be needed, or some other table, but a SHA1 is probably fine -- you'll need to make sure this is indexed in the Meta class for FileAttachment.)
      3. A custom "through" table for the M2M field between ReviewRequest and FileAttachment that specifies the visible position the file attachment is shown at in the list of thumbnails (since right now, it's based on timestamp or ID or something, and we don't want things to shift around).
      1. For 2. here, I think we should use another model (maybe FileAttachmentHistory, to match the DiffSetHistory elsewhere). This way we get consistency for free because we're just using a foreign key.

      2. Agreed. This is probably the best way to go.

      3. I created FileAttachmentHistory for the purpose of using it for groupping. I can't put anything useful there though, so it serves that same purpose as if I had this variable inside the class.
        I will look into part 3 shortly. The behaviour I'm thinking is that once the file attachment was added, it position stays the same (even if it gets updated). If the file collection was deleted, we preserve the relative ordering of the other files. If I will need extra field in the M2M table to achieve this behaviour, I will add it.

    3. 
        
    VO
    reviewbot
    1. This is a review from Review Bot.
        Tool: PEP8 Style Checker
        Processed Files:
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/attachments/forms.py
        Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/templates/reviews/review_request_dlgs.html
      
      
    2. reviewboard/attachments/forms.py (Diff revision 3)
       
       
      Show all issues
      Col: 72
       E502 the backslash is redundant between brackets
      
    3. reviewboard/attachments/forms.py (Diff revision 3)
       
       
      Show all issues
      Col: 17
       E128 continuation line under-indented for visual indent
      
    4. reviewboard/attachments/models.py (Diff revision 3)
       
       
      Show all issues
      Col: 1
       E302 expected 2 blank lines, found 1
      
    5. 
        
    reviewbot
    1. This is a review from Review Bot.
        Tool: Pyflakes
        Processed Files:
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/attachments/forms.py
        Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/templates/reviews/review_request_dlgs.html
      
      
    2. reviewboard/attachments/forms.py (Diff revision 3)
       
       
      Show all issues
       'Max' imported but unused
      
    3. 
        
    VO
    reviewbot
    1. This is a review from Review Bot.
        Tool: PEP8 Style Checker
        Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/attachments/models.py
          reviewboard/attachments/forms.py
          reviewboard/webapi/resources/base_file_attachment.py
        Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/templates/reviews/review_request_dlgs.html
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/static/rb/js/pages/views/reviewablePageView.js
          reviewboard/templates/reviews/review_request_box.html
      
      
    2. reviewboard/attachments/models.py (Diff revision 4)
       
       
      Show all issues
      Col: 1
       E302 expected 2 blank lines, found 1
      
      1. I will fix these in the next iteration.

    3. Show all issues
      Col: 61
       E211 whitespace before '['
      
    4. 
        
    reviewbot
    1. This is a review from Review Bot.
        Tool: Pyflakes
        Processed Files:
          reviewboard/reviews/views.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/attachments/models.py
          reviewboard/attachments/forms.py
          reviewboard/webapi/resources/base_file_attachment.py
        Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/templates/reviews/review_request_dlgs.html
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/static/rb/js/pages/views/reviewablePageView.js
          reviewboard/templates/reviews/review_request_box.html
      
      
    2. reviewboard/reviews/views.py (Diff revision 4)
       
       
      Show all issues
       list comprehension redefines 'file_attachment' from line 574
      
    3. 
        
    VO
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/attachments/forms.py
          reviewboard/staticbundles.py
          reviewboard/reviews/models/base_review_request_details.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/templates/reviews/review_request_dlgs.html
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/static/rb/js/pages/views/reviewablePageView.js
          reviewboard/templates/reviews/review_request_box.html
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/attachments/forms.py
          reviewboard/staticbundles.py
          reviewboard/reviews/models/base_review_request_details.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/templates/reviews/review_request_dlgs.html
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/static/rb/js/pages/views/reviewablePageView.js
          reviewboard/templates/reviews/review_request_box.html
      
      
    2. reviewboard/attachments/forms.py (Diff revision 5)
       
       
      Show all issues
      Col: 17
       E122 continuation line missing indentation or outdented
      
    3. Show all issues
      Col: 61
       E211 whitespace before '['
      
    4. reviewboard/reviews/views.py (Diff revision 5)
       
       
      Show all issues
       list comprehension redefines 'file_attachment' from line 574
      
    5. 
        
    VO
    reviewbot
    1. Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/reviews/urls.py
          reviewboard/attachments/forms.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/reviews/ui/base.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/templates/reviews/review_request_box.html
          reviewboard/static/rb/js/diffviewer/views/attachmentRevisionSelectorView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/static/rb/js/models/fileAttachmentReviewableModel.js
          reviewboard/static/rb/js/views/imageReviewableView.js
          reviewboard/templates/reviews/review_request_dlgs.html
          reviewboard/static/rb/js/pages/views/reviewablePageView.js
          reviewboard/static/rb/js/pages/views/diffViewerPageView.js
      
      
      
      Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/reviews/urls.py
          reviewboard/attachments/forms.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/reviews/ui/base.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/templates/reviews/review_request_box.html
          reviewboard/static/rb/js/diffviewer/views/attachmentRevisionSelectorView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/static/rb/js/models/fileAttachmentReviewableModel.js
          reviewboard/static/rb/js/views/imageReviewableView.js
          reviewboard/templates/reviews/review_request_dlgs.html
          reviewboard/static/rb/js/pages/views/reviewablePageView.js
          reviewboard/static/rb/js/pages/views/diffViewerPageView.js
      
      
    2. reviewboard/attachments/forms.py (Diff revision 6)
       
       
      Show all issues
      Col: 17
       E122 continuation line missing indentation or outdented
      
    3. Show all issues
      Col: 61
       E211 whitespace before '['
      
    4. reviewboard/reviews/views.py (Diff revision 6)
       
       
      Show all issues
       'FileAttachmentHistory' imported but unused
      
    5. reviewboard/reviews/views.py (Diff revision 6)
       
       
      Show all issues
       list comprehension redefines 'file_attachment' from line 576
      
    6. 
        
    VO
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/reviews/urls.py
          reviewboard/attachments/forms.py
          reviewboard/staticbundles.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/reviews/ui/base.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/static/rb/js/diffviewer/views/commonRevisionSelectorView.js
          reviewboard/templates/reviews/review_request_box.html
          reviewboard/static/rb/js/diffviewer/views/diffRevisionSelectorView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/static/rb/js/models/fileAttachmentReviewableModel.js
          reviewboard/static/rb/js/diffviewer/views/attachmentRevisionSelectorView.js
          reviewboard/static/rb/js/views/imageReviewableView.js
          reviewboard/templates/reviews/review_request_dlgs.html
          reviewboard/static/rb/js/pages/views/reviewablePageView.js
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/reviews/urls.py
          reviewboard/attachments/forms.py
          reviewboard/staticbundles.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/reviews/ui/base.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/static/rb/js/diffviewer/views/commonRevisionSelectorView.js
          reviewboard/templates/reviews/review_request_box.html
          reviewboard/static/rb/js/diffviewer/views/diffRevisionSelectorView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/static/rb/js/models/fileAttachmentReviewableModel.js
          reviewboard/static/rb/js/diffviewer/views/attachmentRevisionSelectorView.js
          reviewboard/static/rb/js/views/imageReviewableView.js
          reviewboard/templates/reviews/review_request_dlgs.html
          reviewboard/static/rb/js/pages/views/reviewablePageView.js
      
      
    2. reviewboard/attachments/forms.py (Diff revision 7)
       
       
      Show all issues
      Col: 17
       E122 continuation line missing indentation or outdented
      
    3. Show all issues
      Col: 61
       E211 whitespace before '['
      
    4. reviewboard/reviews/views.py (Diff revision 7)
       
       
      Show all issues
       'FileAttachmentHistory' imported but unused
      
    5. reviewboard/reviews/views.py (Diff revision 7)
       
       
      Show all issues
       list comprehension redefines 'file_attachment' from line 576
      
    6. 
        
    david
    1. 
        
    2. reviewboard/attachments/forms.py (Diff revision 7)
       
       
       
      Show all issues

      Instead of using FileAttachment.objects.filter(attachment_history=attachment_history), you can follow the reverse field (note that this particular code needs the related_name change I asked for elsewhere):

      attachment_revision = (
          attachment_history.file_attachments
              .aggregate(Max('attachment_revision'))
              .get('attachment_revision__max')
          + 1)
      
      1. Nice, I didn't know about the reverse fields before.

    3. reviewboard/attachments/forms.py (Diff revision 7)
       
       
       
       
       
      Show all issues

      Why not just use the FileAttachmentHistory's id field as the display position? It's already a unique integer which is auto-incremented any time a FileAttachmentHistory is created.

      1. Yeah, that's what I wanted to do. Per discussion with ChipX86, however, it was decided to have a separate field for position, as someone might implement attachment reordering. In order to do so easily, we would use a separate field for that, and whoever is implementing this change will just modify the behaviour of this field.

      2. OK. How about rewriting this particular code as such:

        if FileAttachmentHistory.objects.exists():
            attachment_history.display_position = 1
        else:
            attachment_history.display_position = (
                FileAttachmentHistory.objects
                    .aggregate(Max('display_position'))
                    .get('display_position__max') + 1)
        

        The changes here are not using the ternary form (which we generally don't like), some reformatting, and using .exists() instead of .count() (which is slightly more efficient use of the database).

      3. Cool, will do.

    4. reviewboard/attachments/forms.py (Diff revision 7)
       
       
      Show all issues

      We use trailing commas for lists and dicts in python.

    5. reviewboard/attachments/models.py (Diff revision 7)
       
       
      Show all issues

      Care to add related_name='file_attachments' here?

    6. reviewboard/attachments/models.py (Diff revision 7)
       
       
      Show all issues

      If you set default=0, you don't have to set it when creating attachments that don't use an existing FileAttachmentHistory

    7. reviewboard/attachments/models.py (Diff revision 7)
       
       
       
      Show all issues

      This can follow the backwards relationship too:

      return self.file_attachments.count() - 1
      

      Why don't you consider the first uploaded file to be a revision? That doesn't make sense to me. It's not like with diffs where the 'orig' version is upstream.

      1. Well, I was thinking of mimicing behaviour for diffs (you have an original file, which gets upgraded a coupld of times). When displaying it, I am using the "orig" label, just like the diffs do, so I need total - 1 extra selection points. So I used the same definition of revisions as diffs did.
        If you think we should not do that, I can return the count here and then subtract one in the front end part. OK?

    8. Show all issues

      I think it's worth creating a method on FileAttachmentHistory to return the latest revision.

    9. Show all issues

      Can you add a docstring?

    10. Show all issues

      These can be combined and made more efficient using sorted:

      return sorted(self.get_latest_file_attachments(),
                    key=get_display_position)
      
    11. reviewboard/reviews/views.py (Diff revision 7)
       
       
       
      Show all issues

      Care to just put this in the dict definition for context_data? It's not worth defining a variable unless we use it more than once.

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

      Same here.

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

      This can use the backwards relationship.

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

      Should have a trailing comma.

    15. Show all issues

      I think it might be nice to pull out the upload file view into a separate change. You already have the view itself in a separate review request. That way we could move over to the view and get that code pushed before all the rest of this is finished.

      1. Done:
        https://reviews.reviewboard.org/r/5911/ (and also https://reviews.reviewboard.org/r/6120/)

    16. Show all issues

      It looks like 'e' isn't used in here, which will make jshint unhappy. Can you just remove it from the argument list?

    17. Show all issues

      These can be simplified:

      this.$el.html('<div id="revision_selector" />');
      
    18. Show all issues

      Can you make this use /* */, since it's a multi-line comment?

    19. Show all issues

      Alignment is funky here.

    20. Show all issues

      This also needs to take into account the local site name and SITE_ROOT.

    21. Show all issues

      Leftover debug output?

    22. Show all issues

      If you put the review request into a variable in the containing method, you could just use it here without fetching it again.

    23. Show all issues

      We generally put the space at the end of the first line instead of the beginning of the second.

    24. Show all issues

      This can use the reverse relation.

    25. 
        
    VO
    VO
    reviewbot
    1. Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/attachments/forms.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/reviews/ui/base.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/static/rb/js/views/fileAttachmentReviewableView.js
          reviewboard/templates/reviews/ui/text.html
          reviewboard/templates/reviews/review_request_box.html
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/static/rb/js/views/textBasedReviewableView.js
          reviewboard/static/rb/js/models/fileAttachmentReviewableModel.js
          reviewboard/static/rb/js/views/imageReviewableView.js
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/reviews/ui/generic.py
          reviewboard/reviews/ui/__init__.py
          reviewboard/attachments/forms.py
          reviewboard/staticbundles.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/reviews/ui/base.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/static/rb/js/views/fileAttachmentReviewableView.js
          reviewboard/templates/reviews/ui/text.html
          reviewboard/static/rb/js/views/reviewRequestEditorView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/static/rb/js/views/textBasedReviewableView.js
          reviewboard/static/rb/js/views/genericReviewableView.js
          reviewboard/static/rb/js/models/fileAttachmentReviewableModel.js
          reviewboard/static/rb/js/views/imageReviewableView.js
          reviewboard/templates/reviews/review_request_box.html
          reviewboard/static/rb/js/pages/views/reviewablePageView.js
      
      
    2. reviewboard/attachments/models.py (Diff revision 8)
       
       
      Show all issues
      Col: 56
       E251 unexpected spaces around keyword / parameter equals
      
    3. reviewboard/attachments/models.py (Diff revision 8)
       
       
      Show all issues
      Col: 58
       E251 unexpected spaces around keyword / parameter equals
      
    4. reviewboard/attachments/models.py (Diff revision 8)
       
       
      Show all issues
      Col: 63
       E502 the backslash is redundant between brackets
      
    5. reviewboard/attachments/models.py (Diff revision 8)
       
       
      Show all issues
      Col: 13
       E128 continuation line under-indented for visual indent
      
    6. Show all issues
      Col: 13
       E128 continuation line under-indented for visual indent
      
    7. reviewboard/reviews/views.py (Diff revision 8)
       
       
      Show all issues
      Col: 59
       E502 the backslash is redundant between brackets
      
    8. reviewboard/reviews/views.py (Diff revision 8)
       
       
      Show all issues
      Col: 13
       E131 continuation line unaligned for hanging indent
      
    9. reviewboard/reviews/views.py (Diff revision 8)
       
       
      Show all issues
      Col: 60
       E502 the backslash is redundant between brackets
      
    10. reviewboard/reviews/views.py (Diff revision 8)
       
       
      Show all issues
      Col: 17
       E131 continuation line unaligned for hanging indent
      
    11. reviewboard/attachments/models.py (Diff revision 9)
       
       
      Show all issues
      Col: 56
       E251 unexpected spaces around keyword / parameter equals
      
    12. reviewboard/attachments/models.py (Diff revision 9)
       
       
      Show all issues
      Col: 58
       E251 unexpected spaces around keyword / parameter equals
      
    13. reviewboard/attachments/models.py (Diff revision 9)
       
       
      Show all issues
      Col: 63
       E502 the backslash is redundant between brackets
      
    14. reviewboard/attachments/models.py (Diff revision 9)
       
       
      Show all issues
      Col: 13
       E128 continuation line under-indented for visual indent
      
    15. Show all issues
      Col: 13
       E128 continuation line under-indented for visual indent
      
    16. reviewboard/reviews/ui/generic.py (Diff revision 9)
       
       
      Show all issues
      Col: 18
       E261 at least two spaces before inline comment
      
    17. reviewboard/reviews/views.py (Diff revision 9)
       
       
      Show all issues
      Col: 59
       E502 the backslash is redundant between brackets
      
    18. reviewboard/reviews/views.py (Diff revision 9)
       
       
      Show all issues
      Col: 13
       E131 continuation line unaligned for hanging indent
      
    19. reviewboard/reviews/views.py (Diff revision 9)
       
       
      Show all issues
      Col: 60
       E502 the backslash is redundant between brackets
      
    20. reviewboard/reviews/views.py (Diff revision 9)
       
       
      Show all issues
      Col: 17
       E131 continuation line unaligned for hanging indent
      
    21. 
        
    VO
    reviewbot
    1. Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/reviews/ui/generic.py
          reviewboard/reviews/ui/__init__.py
          reviewboard/attachments/forms.py
          reviewboard/staticbundles.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/reviews/ui/base.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/static/rb/js/views/fileAttachmentReviewableView.js
          reviewboard/templates/reviews/ui/text.html
          reviewboard/static/rb/js/views/reviewRequestEditorView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/static/rb/js/views/textBasedReviewableView.js
          reviewboard/static/rb/js/views/genericReviewableView.js
          reviewboard/static/rb/js/models/fileAttachmentReviewableModel.js
          reviewboard/static/rb/js/views/imageReviewableView.js
          reviewboard/templates/reviews/review_request_box.html
          reviewboard/static/rb/js/pages/views/reviewablePageView.js
      
      
    2. reviewboard/reviews/views.py (Diff revision 10)
       
       
      Show all issues
      Col: 36
       E131 continuation line unaligned for hanging indent
      
    3. reviewboard/reviews/views.py (Diff revision 10)
       
       
      Show all issues
      Col: 40
       E131 continuation line unaligned for hanging indent
      
    4. 
        
    PE
    1. 
        
    2. Show all issues

      Can this fit on one line?

    3. Show all issues

      Is this a tab instead of white space?

    4. Show all issues

      Can this be hyphen-separated for consistency with your classes?

      1. There are a bunch of these (e.g. diff_revision_selector), but that's an existing code, so I decided not to modify it. Maybe I'll make a separate review that fixes style problems in files that I had to work with.

    5. 
        
    VO
    VO
    VO
    VO
    reviewbot
    1. Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/reviews/ui/generic.py
          reviewboard/reviews/ui/__init__.py
          reviewboard/attachments/forms.py
          reviewboard/staticbundles.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/reviews/ui/base.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/static/rb/js/views/fileAttachmentReviewableView.js
          reviewboard/templates/reviews/ui/text.html
          reviewboard/static/rb/js/views/reviewRequestEditorView.js
          reviewboard/templates/reviews/parts/file_attachment_thumbnail.html
          reviewboard/static/rb/js/views/textBasedReviewableView.js
          reviewboard/static/rb/js/views/genericReviewableView.js
          reviewboard/static/rb/js/models/fileAttachmentReviewableModel.js
          reviewboard/static/rb/js/views/imageReviewableView.js
          reviewboard/templates/reviews/review_request_box.html
          reviewboard/static/rb/js/pages/views/reviewablePageView.js
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/reviews/ui/generic.py
          reviewboard/attachments/evolutions/__init__.py
          reviewboard/reviews/ui/__init__.py
          reviewboard/attachments/evolutions/file_attachment_revision.py
          reviewboard/attachments/forms.py
          reviewboard/staticbundles.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/reviews/ui/base.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/static/rb/js/views/fileAttachmentReviewableView.js
          reviewboard/templates/reviews/ui/text.html
          reviewboard/templates/reviews/review_request_box.html
          reviewboard/static/rb/js/views/textBasedReviewableView.js
          reviewboard/static/rb/js/views/genericReviewableView.js
          reviewboard/static/rb/js/models/fileAttachmentReviewableModel.js
          reviewboard/static/rb/js/views/imageReviewableView.js
      
      
    2. Show all issues
      Col: 80
       E501 line too long (86 > 79 characters)
      
    3. Show all issues
      Col: 80
       E501 line too long (133 > 79 characters)
      
    4. 
        
    VO
    VO
    reviewbot
    1. Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/reviews/ui/generic.py
          reviewboard/attachments/evolutions/__init__.py
          reviewboard/reviews/ui/__init__.py
          reviewboard/attachments/evolutions/file_attachment_revision.py
          reviewboard/attachments/forms.py
          reviewboard/staticbundles.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/reviews/ui/base.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/static/rb/js/views/fileAttachmentReviewableView.js
          reviewboard/templates/reviews/ui/text.html
          reviewboard/templates/reviews/review_request_box.html
          reviewboard/static/rb/js/views/textBasedReviewableView.js
          reviewboard/static/rb/js/views/genericReviewableView.js
          reviewboard/static/rb/js/models/fileAttachmentReviewableModel.js
          reviewboard/static/rb/js/views/imageReviewableView.js
      
      
    2. Show all issues
      Col: 13
       E128 continuation line under-indented for visual indent
      
    3. Show all issues
      Col: 13
       E128 continuation line under-indented for visual indent
      
    4. 
        
    reviewbot
    1. Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/reviews/views.py
          reviewboard/webapi/resources/base_file_attachment.py
          reviewboard/attachments/models.py
          reviewboard/reviews/ui/generic.py
          reviewboard/attachments/evolutions/__init__.py
          reviewboard/reviews/ui/__init__.py
          reviewboard/attachments/evolutions/file_attachment_revision.py
          reviewboard/attachments/forms.py
          reviewboard/staticbundles.py
          reviewboard/reviews/models/base_review_request_details.py
          reviewboard/reviews/ui/base.py
      
      Ignored Files:
          reviewboard/static/rb/js/views/fileAttachmentThumbnailView.js
          reviewboard/static/rb/js/views/fileAttachmentReviewableView.js
          reviewboard/templates/reviews/ui/text.html
          reviewboard/templates/reviews/review_request_box.html
          reviewboard/static/rb/js/views/textBasedReviewableView.js
          reviewboard/static/rb/js/views/genericReviewableView.js
          reviewboard/static/rb/js/models/fileAttachmentReviewableModel.js
          reviewboard/static/rb/js/views/imageReviewableView.js
      
      
    2. Show all issues
      Col: 13
       E128 continuation line under-indented for visual indent
      
    3. Show all issues
      Col: 13
       E128 continuation line under-indented for visual indent
      
    4. 
        
    VO
    Review request changed
    Status:
    Discarded