Why does this work if you return the wrapped exception? Since it's a
Response, shouldn't Pyramid just return it to the user?

On Thu, Dec 15, 2016 at 12:22 PM, Jonathan Vanasco
<[email protected]> wrote:
> Since you explicitly want to return a JSON error (and not adapt a response
> for the path) I can offer another strategy (which i use).
>
> This is from memory so the code may need some tweaking.  (working from home
> today and don't have the source)
>
> 1. Define a custom class for JSON exceptions:
>
>     class ViewException_JSON(Exception):
>         def __init__(self, message, pyramid_exc):
>             self.message = message
>             self.pyramid_exc = pyramid_exc
>
> 2. Define a custom view exception:
>
>     @view_config(context=ViewException_JSON, renderer='json')
>     def exception_view_json(exc, request):
>         rval = {'status': error,
>                 'message': exc.message,  # this can be a python dict!
>                 }
>         request.response.status_code = exc.pyramid_exc.code
>         # handle the `location` stuff
>
> 3. In your code, return/raise a wrapped exception. Both should work.
>
>        raise ViewException_JSON(HTTPFound(location=))
>        return ViewException_JSON(HTTPFound(location=))
>
>
> Another option is to use a custom HttpFound class, and handle that with an
> view_config `context` too.  I've settled on wrapping the Pyramid exceptions
> though, because I've found it a little bit easier in terms of maintenance
> (documentation, understanding, etc)
>
> --
> You received this message because you are subscribed to the Google Groups
> "pylons-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/pylons-discuss/9060c7ee-312a-47f3-b04d-13b6039909d6%40googlegroups.com.
>
> For more options, visit https://groups.google.com/d/optout.



-- 
Mike Orr <[email protected]>

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pylons-discuss/CAH9f%3DuooXh1BM5mkip%2BfdbpoqXnmER1PFTVuKtd6%2BrOQ3iSa0Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to