• 
      

    Caught DoesNotExist exceptions in WebAPI, now raises 404

    Review Request #3041 — Created April 3, 2012 and discarded

    Information

    Djblets

    Reviewers

    This addresses issue 2551.
    
    Caught the DoesNotExist exceptions in the web API, and raised a HTTP 404 exception instead.
    
    Unfortunately, it looks like I missed a space at the end of one line.
    The (potential) problem I have with this one is that it will catch any DoesNotExist exception (rather than just the one associated with the review_request_resource model).
    Testing done in Linux 3.2.13 with Chromium 18.0.
    
    I visited local links that pointed to invalid review requests:
    http://localhost:8080/api/review-requests/99/diffs/1/files/1/diff-comments/
    [03/Apr/2012 22:37:30] "GET /api/review-requests/99/diffs/1/files/1/diff-comments/ HTTP/1.1" 404 139
    http://localhost:8080/api/review-requests/999999999/screenshots/
    [03/Apr/2012 22:40:35] "GET /api/review-requests/999999999/screenshots/ HTTP/1.1" 404 139
    chipx86
    1. I'm not sure this is right. What's actually throwing the exception?
      
      If we're that far into a list resource and we're getting an ObjectDoesNotExist, something went wrong. We've never needed to do this before, so I suspect the problem is best fixed elsewhere.
      1. ScreenshotResource uses WebAPIResource's get_list [line 671 of djblets/webapi/resources.py] which calls BaseScreenshotResource's get_queryset [line 2828 in rb], which calls review_request_resource.get_object [line 6223 in rb] (which is why I have to catch a more generic DoesNotExist error).
        
        The exception is being thrown when queryset.get is called on lines 6234 of reviewboard/webapi/resources.py in get_object. Would raising an Http404 exception as in r/3040 be the recommended solution (it does differ from methods that use DOES_NOT_EXIST in that it's not directly part of the Web API)?
    2. 
        
    AM
    Review request changed
    Status:
    Discarded