New resource for "owned" and review request independent file attachments

Review Request #6220 — Created Aug. 12, 2014 and discarded

Information

Review Board
master

Reviewers

New resource for user file attachments.

New file attachment resource was creating using the frontend backbone/RB.BaseResource model and post/put/get were tested manually.

  • Successfully created a file attachment user content is always empty upon creation as expected
  • Successfully posted caption and file data
  • Successfully modified and saved caption data
  • Tried to update file a second time and observed the expected behaviour (it failed)
  • Manually tested get_list by making a request to /api/file-attachments/, it returned a list of all file attachments owned by the user making the request as expected.
Description From Last Updated

'reviewboard' imported but unused

reviewbotreviewbot

Col: 13 E241 multiple spaces after ':'

reviewbotreviewbot

Col: 22 E241 multiple spaces after ':'

reviewbotreviewbot

Col: 22 E241 multiple spaces after ':'

reviewbotreviewbot

Col: 17 E241 multiple spaces after ':'

reviewbotreviewbot

Col: 26 E241 multiple spaces after ':'

reviewbotreviewbot

Col: 28 E241 multiple spaces after ':'

reviewbotreviewbot

Col: 22 E241 multiple spaces after ':'

reviewbotreviewbot

Col: 22 E241 multiple spaces after ':'

reviewbotreviewbot

Col: 17 E241 multiple spaces after ':'

reviewbotreviewbot

Col: 26 E241 multiple spaces after ':'

reviewbotreviewbot

Col: 28 E241 multiple spaces after ':'

reviewbotreviewbot

local variable 'positions_key' is assigned to but never used

reviewbotreviewbot

redefinition of unused 'FileDiffMigrationTests' from line 726

reviewbotreviewbot

list comprehension redefines 'file_attachment' from line 583

reviewbotreviewbot

We generally avoid the ternary form because it's annoying. How about rewriting this as: if self.orig_filename: return self.orig_filename elif self.file: …

daviddavid

Why did you make this change?

daviddavid

Trailing spaces in javascript can break IE.

daviddavid

Remove this line.

daviddavid

This should probably include everything if it's an admin making the request.

daviddavid

Docstrings should generally follow the same format that you might use for a commit message -- the first line should …

daviddavid

Same comments as the above docstring.

daviddavid

What happens if you just let it assign None to the caption field?

daviddavid

PERMISSION_DENIED doesn't seem quite right. How about creating a new error, FILE_ALREADY_EXISTS?

daviddavid

'User' imported but unused

reviewbotreviewbot

'User' imported but unused

reviewbotreviewbot
reviewbot
  1. Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/models.py
        reviewboard/attachments/forms.py
        reviewboard/webapi/resources/root.py
    
    
    
    Tool: Pyflakes
    Processed Files:
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/models.py
        reviewboard/attachments/forms.py
        reviewboard/webapi/resources/root.py
    
    
  2. 
      
RV
RV
RV
RV
RV
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/models.py
        reviewboard/attachments/forms.py
        reviewboard/webapi/resources/root.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/models.py
        reviewboard/attachments/forms.py
        reviewboard/webapi/resources/root.py
    
    
  2. 
      
RV
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/models.py
        reviewboard/attachments/forms.py
        reviewboard/webapi/resources/root.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/models.py
        reviewboard/attachments/forms.py
        reviewboard/webapi/resources/root.py
    
    
  2. 
      
RV
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/models.py
        reviewboard/attachments/forms.py
        reviewboard/webapi/resources/root.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/models.py
        reviewboard/attachments/forms.py
        reviewboard/webapi/resources/root.py
    
    
  2. 
      
RV
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/webapi/resources/root.py
        reviewboard/diffviewer/management/commands/condensediffs.py
        reviewboard/attachments/models.py
        reviewboard/diffviewer/managers.py
        reviewboard/reviews/markdown_utils.py
        reviewboard/reviews/tests.py
        reviewboard/webapi/resources/review_request.py
        reviewboard/webapi/tests/test_review_request.py
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/staticbundles.py
        reviewboard/webapi/resources/review_request_draft.py
        reviewboard/webapi/tests/test_review_request_draft.py
        reviewboard/scmtools/svn/subvertpy.py
    
    Ignored Files:
        reviewboard/static/rb/js/configForms/models/tests/resourceListItemModelTests.js
        reviewboard/static/rb/css/ui/boxes.less
        reviewboard/static/rb/js/resources/models/apiTokenModel.js
        reviewboard/static/rb/js/resources/models/fileAttachmentUserModel.js
        reviewboard/static/rb/js/views/tests/reviewRequestEditorViewTests.js
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/webapi/resources/root.py
        reviewboard/diffviewer/management/commands/condensediffs.py
        reviewboard/attachments/models.py
        reviewboard/diffviewer/managers.py
        reviewboard/reviews/markdown_utils.py
        reviewboard/reviews/tests.py
        reviewboard/webapi/resources/review_request.py
        reviewboard/webapi/tests/test_review_request.py
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/staticbundles.py
        reviewboard/webapi/resources/review_request_draft.py
        reviewboard/webapi/tests/test_review_request_draft.py
        reviewboard/scmtools/svn/subvertpy.py
    
    Ignored Files:
        reviewboard/static/rb/js/configForms/models/tests/resourceListItemModelTests.js
        reviewboard/static/rb/css/ui/boxes.less
        reviewboard/static/rb/js/resources/models/apiTokenModel.js
        reviewboard/static/rb/js/resources/models/fileAttachmentUserModel.js
        reviewboard/static/rb/js/views/tests/reviewRequestEditorViewTests.js
    
    
  2. 
      
RV
RV
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/reviews/views.py
        reviewboard/admin/views.py
        reviewboard/diffviewer/renderers.py
        reviewboard/webapi/resources/root.py
        reviewboard/diffviewer/tests.py
        reviewboard/diffviewer/evolutions/__init__.py
        reviewboard/webapi/resources/diff.py
        reviewboard/staticbundles.py
        reviewboard/diffviewer/evolutions/raw_diff_file_data.py
        reviewboard/admin/forms.py
        reviewboard/attachments/models.py
        reviewboard/webapi/resources/base_original_file.py
        setup.py
        reviewboard/diffviewer/managers.py
        reviewboard/admin/siteconfig.py
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/admin/checks.py
        reviewboard/diffviewer/management/commands/condensediffs.py
        reviewboard/webapi/resources/base_patched_file.py
        reviewboard/scmtools/hg.py
        reviewboard/__init__.py
        reviewboard/webapi/resources/filediff.py
        reviewboard/diffviewer/diffutils.py
        reviewboard/diffviewer/models.py
    
    Ignored Files:
        reviewboard/static/rb/js/resources/models/fileAttachmentUserModel.js
        reviewboard/static/rb/js/resources/models/baseResourceModel.js
        docs/releasenotes/index.rst
        docs/manual/admin/installation/linux.rst
        docs/manual/admin/configuration/file-storage-settings.rst
        docs/releasenotes/2.0.6.rst
        AUTHORS
        docs/releasenotes/1.7.28.rst
        reviewboard/static/rb/js/diffviewer/views/diffRevisionSelectorView.js
        reviewboard/static/rb/js/resources/models/apiTokenModel.js
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/reviews/views.py
        reviewboard/admin/views.py
        reviewboard/diffviewer/renderers.py
        reviewboard/webapi/resources/root.py
        reviewboard/diffviewer/tests.py
        reviewboard/diffviewer/evolutions/__init__.py
        reviewboard/webapi/resources/diff.py
        reviewboard/staticbundles.py
        reviewboard/diffviewer/evolutions/raw_diff_file_data.py
        reviewboard/admin/forms.py
        reviewboard/attachments/models.py
        reviewboard/webapi/resources/base_original_file.py
        setup.py
        reviewboard/diffviewer/managers.py
        reviewboard/admin/siteconfig.py
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/admin/checks.py
        reviewboard/diffviewer/management/commands/condensediffs.py
        reviewboard/webapi/resources/base_patched_file.py
        reviewboard/scmtools/hg.py
        reviewboard/__init__.py
        reviewboard/webapi/resources/filediff.py
        reviewboard/diffviewer/diffutils.py
        reviewboard/diffviewer/models.py
    
    Ignored Files:
        reviewboard/static/rb/js/resources/models/fileAttachmentUserModel.js
        reviewboard/static/rb/js/resources/models/baseResourceModel.js
        docs/releasenotes/index.rst
        docs/manual/admin/installation/linux.rst
        docs/manual/admin/configuration/file-storage-settings.rst
        docs/releasenotes/2.0.6.rst
        AUTHORS
        docs/releasenotes/1.7.28.rst
        reviewboard/static/rb/js/diffviewer/views/diffRevisionSelectorView.js
        reviewboard/static/rb/js/resources/models/apiTokenModel.js
    
    
  2. reviewboard/__init__.py (Diff revision 7)
     
     
    Show all issues
     'reviewboard' imported but unused
    
  3. reviewboard/admin/siteconfig.py (Diff revision 7)
     
     
    Show all issues
    Col: 13
     E241 multiple spaces after ':'
    
  4. reviewboard/admin/siteconfig.py (Diff revision 7)
     
     
    Show all issues
    Col: 22
     E241 multiple spaces after ':'
    
  5. reviewboard/admin/siteconfig.py (Diff revision 7)
     
     
    Show all issues
    Col: 22
     E241 multiple spaces after ':'
    
  6. reviewboard/admin/siteconfig.py (Diff revision 7)
     
     
    Show all issues
    Col: 17
     E241 multiple spaces after ':'
    
  7. reviewboard/admin/siteconfig.py (Diff revision 7)
     
     
    Show all issues
    Col: 26
     E241 multiple spaces after ':'
    
  8. reviewboard/admin/siteconfig.py (Diff revision 7)
     
     
    Show all issues
    Col: 28
     E241 multiple spaces after ':'
    
  9. reviewboard/admin/siteconfig.py (Diff revision 7)
     
     
    Show all issues
    Col: 22
     E241 multiple spaces after ':'
    
  10. reviewboard/admin/siteconfig.py (Diff revision 7)
     
     
    Show all issues
    Col: 22
     E241 multiple spaces after ':'
    
  11. reviewboard/admin/siteconfig.py (Diff revision 7)
     
     
    Show all issues
    Col: 17
     E241 multiple spaces after ':'
    
  12. reviewboard/admin/siteconfig.py (Diff revision 7)
     
     
    Show all issues
    Col: 26
     E241 multiple spaces after ':'
    
  13. reviewboard/admin/siteconfig.py (Diff revision 7)
     
     
    Show all issues
    Col: 28
     E241 multiple spaces after ':'
    
  14. reviewboard/admin/views.py (Diff revision 7)
     
     
    Show all issues
     local variable 'positions_key' is assigned to but never used
    
  15. reviewboard/diffviewer/tests.py (Diff revision 7)
     
     
    Show all issues
     redefinition of unused 'FileDiffMigrationTests' from line 726
    
  16. reviewboard/reviews/views.py (Diff revision 7)
     
     
    Show all issues
     list comprehension redefines 'file_attachment' from line 583
    
  17. 
      
chipx86
  1. Something went terribly wrong with this commit. Make sure you have master merged into your branch.

    1. Sorry about that, I have my own repository where I store some of my branches and rbt post was using the master branch upstream of the branch I was working on (which was out of date). I have resolved the issue and updated the review request.

  2. 
      
RV
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/webapi/resources/root.py
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/models.py
        reviewboard/staticbundles.py
    
    Ignored Files:
        reviewboard/static/rb/js/resources/models/apiTokenModel.js
        reviewboard/static/rb/js/resources/models/fileAttachmentUserModel.js
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/webapi/resources/root.py
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/models.py
        reviewboard/staticbundles.py
    
    Ignored Files:
        reviewboard/static/rb/js/resources/models/apiTokenModel.js
        reviewboard/static/rb/js/resources/models/fileAttachmentUserModel.js
    
    
  2. 
      
david
  1. This also needs unit tests for the new API.

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

    We generally avoid the ternary form because it's annoying. How about rewriting this as:

    if self.orig_filename:
        return self.orig_filename
    elif self.file:
        return os.path.basename(self.file.name)
    else:
        return None
    
  3. Show all issues

    Why did you make this change?

  4. Show all issues

    Trailing spaces in javascript can break IE.

    1. I don't see any trailing spaces.

  5. Show all issues

    Remove this line.

  6. Show all issues

    This should probably include everything if it's an admin making the request.

  7. Show all issues

    Docstrings should generally follow the same format that you might use for a commit message -- the first line should be a summary, and then additional paragraphs can go into more explanation.

    Indentation should also be:

    def create(self, request, *args, **kwargs):
        """Create a FileAttachment
    
        Here's some more explanation.
        """
    

    I'm also not 100% sure we should completely ignore the POST parameters. If a file or caption is present, we should use it (the web UI isn't the only consumer of the API).

  8. Show all issues

    Same comments as the above docstring.

  9. Show all issues

    What happens if you just let it assign None to the caption field?

  10. Show all issues

    PERMISSION_DENIED doesn't seem quite right. How about creating a new error, FILE_ALREADY_EXISTS?

  11. 
      
RV
reviewbot
  1. Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/webapi/resources/root.py
        reviewboard/attachments/models.py
        reviewboard/webapi/errors.py
        reviewboard/attachments/evolutions/__init__.py
        reviewboard/attachments/mimetypes.py
        reviewboard/attachments/evolutions/file_attachment_ownership.py
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/forms.py
        reviewboard/staticbundles.py
    
    Ignored Files:
        reviewboard/static/rb/js/resources/models/apiTokenModel.js
        reviewboard/static/rb/js/resources/models/fileAttachmentUserModel.js
    
    
    
    Tool: Pyflakes
    Processed Files:
        reviewboard/webapi/resources/root.py
        reviewboard/attachments/models.py
        reviewboard/webapi/errors.py
        reviewboard/attachments/evolutions/__init__.py
        reviewboard/attachments/mimetypes.py
        reviewboard/attachments/evolutions/file_attachment_ownership.py
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/forms.py
        reviewboard/staticbundles.py
    
    Ignored Files:
        reviewboard/static/rb/js/resources/models/apiTokenModel.js
        reviewboard/static/rb/js/resources/models/fileAttachmentUserModel.js
    
    
  2. Show all issues
     'User' imported but unused
    
  3. 
      
RV
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/webapi/resources/root.py
        reviewboard/attachments/models.py
        reviewboard/webapi/errors.py
        reviewboard/attachments/evolutions/__init__.py
        reviewboard/attachments/mimetypes.py
        reviewboard/attachments/evolutions/file_attachment_ownership.py
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/forms.py
        reviewboard/staticbundles.py
    
    Ignored Files:
        reviewboard/static/rb/js/resources/models/apiTokenModel.js
        reviewboard/static/rb/js/resources/models/fileAttachmentUserModel.js
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/webapi/resources/root.py
        reviewboard/attachments/models.py
        reviewboard/webapi/errors.py
        reviewboard/attachments/evolutions/__init__.py
        reviewboard/attachments/mimetypes.py
        reviewboard/attachments/evolutions/file_attachment_ownership.py
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/forms.py
        reviewboard/staticbundles.py
    
    Ignored Files:
        reviewboard/static/rb/js/resources/models/apiTokenModel.js
        reviewboard/static/rb/js/resources/models/fileAttachmentUserModel.js
    
    
  2. Show all issues
     'User' imported but unused
    
  3. 
      
RV
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/webapi/resources/root.py
        reviewboard/attachments/models.py
        reviewboard/webapi/errors.py
        reviewboard/attachments/evolutions/__init__.py
        reviewboard/attachments/mimetypes.py
        reviewboard/attachments/evolutions/file_attachment_ownership.py
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/forms.py
        reviewboard/staticbundles.py
    
    Ignored Files:
        reviewboard/static/rb/js/resources/models/apiTokenModel.js
        reviewboard/static/rb/js/resources/models/fileAttachmentUserModel.js
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/webapi/resources/root.py
        reviewboard/attachments/models.py
        reviewboard/webapi/errors.py
        reviewboard/attachments/evolutions/__init__.py
        reviewboard/attachments/mimetypes.py
        reviewboard/attachments/evolutions/file_attachment_ownership.py
        reviewboard/webapi/resources/file_attachment_user.py
        reviewboard/attachments/forms.py
        reviewboard/staticbundles.py
    
    Ignored Files:
        reviewboard/static/rb/js/resources/models/apiTokenModel.js
        reviewboard/static/rb/js/resources/models/fileAttachmentUserModel.js
    
    
  2. 
      
RV
Review request changed
Status:
Discarded