Status Updates part 6: Add resource for status updates.

Review Request #8407 — Created Sept. 18, 2016 and submitted

Information

Review Board
release-3.0.x
2d8b8cc...

Reviewers

This change adds an API endpoint for creating and manipulating status updates.
This is intended to be used by consumers who want to create status updates from
a purely third-party source without writing an extension.

Ran unit tests.

Description From Last Updated

We should have unit tests for POSTing/PUTing with: 1) Bad change IDs 2) Bad review IDs 3) Bad statuses Also, …

chipx86chipx86

We should have a docstring here. (I know the others don't, but that's something we need to do at some …

chipx86chipx86

Since this is public docs, this should be greatly fleshed out to cover more about what the resource is about. …

chipx86chipx86

Can we add some filtering options for timestamps, change description IDs, states, and service IDs, and document those? (This would …

chipx86chipx86

Here and in other HTTP handler methods, we should use "Returns." While "Return" is appropriate for codebase docs, API docs …

chipx86chipx86

Missing Args and Returns.

chipx86chipx86

This should be fleshed out to go into more details about usage. For instance, indicating when a change/review ID would …

chipx86chipx86

For consistency with the other resources, can we make this: return 201, { self.item_result_key: status_update, }

chipx86chipx86

This needs a docstring for the public API docs.

chipx86chipx86

Same comment as above.

chipx86chipx86

Missing docstring.

chipx86chipx86

This can use the pattern other resources use: for field_name in ('service_id', 'summary', 'description', ...): if field_name in kwargs: setattr(status_update, …

chipx86chipx86

This needs to check and return a suitable error.

chipx86chipx86

Needs docs.

chipx86chipx86

User or unicode

brenniebrennie

In part 5, you use done-success and done-failure in the StatusUpdate model.

brenniebrennie

Missing Returns

chipx86chipx86
chipx86
  1. 
      
  2. Show all issues

    We should have unit tests for POSTing/PUTing with:

    1) Bad change IDs
    2) Bad review IDs
    3) Bad statuses

    Also, can you run ./contrib/internal/webapi-lint.py and make sure this doesn't introduce new warnings?

  3. reviewboard/testing/testcase.py (Diff revision 1)
     
     
     
     
    Show all issues

    We should have a docstring here. (I know the others don't, but that's something we need to do at some point too.)

  4. Show all issues

    Since this is public docs, this should be greatly fleshed out to cover more about what the resource is about. Purpose of status updates, how you'd use the resource, etc. would be good.

  5. reviewboard/webapi/resources/status_update.py (Diff revision 1)
     
     
     
     
     
     
    Show all issues

    Can we add some filtering options for timestamps, change description IDs, states, and service IDs, and document those? (This would go in get_queryset, but should be documented here.)

    1. I'd like to add that in a later change.

  6. Show all issues

    Here and in other HTTP handler methods, we should use "Returns." While "Return" is appropriate for codebase docs, API docs aren't using it.

  7. Show all issues

    Missing Args and Returns.

  8. Show all issues

    This should be fleshed out to go into more details about usage. For instance, indicating when a change/review ID would be provided, ordering of operations.

    1. I'm not sure what you mean by "ordering of operations". Can you clarify?

  9. Show all issues

    For consistency with the other resources, can we make this:

    return 201, {
        self.item_result_key: status_update,
    }
    
  10. Show all issues

    This needs a docstring for the public API docs.

  11. Show all issues

    Same comment as above.

  12. Show all issues

    Missing docstring.

  13. reviewboard/webapi/resources/status_update.py (Diff revision 1)
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    Show all issues

    This can use the pattern other resources use:

    for field_name in ('service_id', 'summary', 'description', ...):
        if field_name in kwargs:
            setattr(status_update, field_name, kwargs[field_name])
    
  14. reviewboard/webapi/resources/status_update.py (Diff revision 1)
     
     
     
     
     
     
     
     
     
    Show all issues

    This needs to check and return a suitable error.

  15. Show all issues

    Needs docs.

  16. 
      
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/testing/testcase.py
        reviewboard/webapi/resources/__init__.py
        reviewboard/webapi/tests/test_review.py
        reviewboard/webapi/resources/review_request.py
        reviewboard/webapi/tests/test_status_update.py
        reviewboard/webapi/tests/urls.py
        reviewboard/webapi/tests/mimetypes.py
        reviewboard/webapi/resources/status_update.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/testing/testcase.py
        reviewboard/webapi/resources/__init__.py
        reviewboard/webapi/tests/test_review.py
        reviewboard/webapi/resources/review_request.py
        reviewboard/webapi/tests/test_status_update.py
        reviewboard/webapi/tests/urls.py
        reviewboard/webapi/tests/mimetypes.py
        reviewboard/webapi/resources/status_update.py
    
    
  2. 
      
david
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/testing/testcase.py
        reviewboard/webapi/resources/__init__.py
        reviewboard/webapi/tests/test_review.py
        reviewboard/webapi/resources/review_request.py
        reviewboard/webapi/tests/test_status_update.py
        reviewboard/webapi/tests/urls.py
        reviewboard/webapi/tests/mimetypes.py
        reviewboard/webapi/resources/status_update.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/testing/testcase.py
        reviewboard/webapi/resources/__init__.py
        reviewboard/webapi/tests/test_review.py
        reviewboard/webapi/resources/review_request.py
        reviewboard/webapi/tests/test_status_update.py
        reviewboard/webapi/tests/urls.py
        reviewboard/webapi/tests/mimetypes.py
        reviewboard/webapi/resources/status_update.py
    
    
  2. 
      
david
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/testing/testcase.py
        reviewboard/webapi/resources/__init__.py
        reviewboard/webapi/tests/test_review.py
        reviewboard/webapi/resources/review_request.py
        reviewboard/webapi/tests/test_status_update.py
        reviewboard/webapi/tests/urls.py
        reviewboard/webapi/tests/mimetypes.py
        reviewboard/webapi/resources/status_update.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/testing/testcase.py
        reviewboard/webapi/resources/__init__.py
        reviewboard/webapi/tests/test_review.py
        reviewboard/webapi/resources/review_request.py
        reviewboard/webapi/tests/test_status_update.py
        reviewboard/webapi/tests/urls.py
        reviewboard/webapi/tests/mimetypes.py
        reviewboard/webapi/resources/status_update.py
    
    
  2. 
      
brennie
  1. 
      
  2. reviewboard/testing/testcase.py (Diff revision 3)
     
     
    Show all issues

    User or unicode

  3. Show all issues

    In part 5, you use done-success and done-failure in the StatusUpdate model.

    1. Looks like you started reviewing this just before I posted an updated diff with this fixed.

  4. 
      
david
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/testing/testcase.py
        reviewboard/webapi/resources/__init__.py
        reviewboard/webapi/tests/test_review.py
        reviewboard/webapi/resources/review_request.py
        reviewboard/webapi/tests/test_status_update.py
        reviewboard/webapi/tests/urls.py
        reviewboard/webapi/tests/mimetypes.py
        reviewboard/webapi/resources/status_update.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/testing/testcase.py
        reviewboard/webapi/resources/__init__.py
        reviewboard/webapi/tests/test_review.py
        reviewboard/webapi/resources/review_request.py
        reviewboard/webapi/tests/test_status_update.py
        reviewboard/webapi/tests/urls.py
        reviewboard/webapi/tests/mimetypes.py
        reviewboard/webapi/resources/status_update.py
    
    
  2. 
      
chipx86
  1. 
      
  2. reviewboard/testing/testcase.py (Diff revision 4)
     
     
     
     
     
     
     
     
     
    Show all issues

    Missing Returns

  3. 
      
david
reviewbot
  1. Tool: Pyflakes
    Processed Files:
        reviewboard/testing/testcase.py
        reviewboard/webapi/resources/__init__.py
        reviewboard/webapi/tests/test_review.py
        reviewboard/webapi/resources/review_request.py
        reviewboard/webapi/tests/test_status_update.py
        reviewboard/webapi/tests/urls.py
        reviewboard/webapi/tests/mimetypes.py
        reviewboard/webapi/resources/status_update.py
    
    
    
    Tool: PEP8 Style Checker
    Processed Files:
        reviewboard/testing/testcase.py
        reviewboard/webapi/resources/__init__.py
        reviewboard/webapi/tests/test_review.py
        reviewboard/webapi/resources/review_request.py
        reviewboard/webapi/tests/test_status_update.py
        reviewboard/webapi/tests/urls.py
        reviewboard/webapi/tests/mimetypes.py
        reviewboard/webapi/resources/status_update.py
    
    
  2. 
      
chipx86
  1. Ship It!
  2. 
      
david
Review request changed
Status:
Completed
Change Summary:
Pushed to release-3.0.x (a3177aa)