From: W. Trevor King Date: Mon, 29 Oct 2012 00:20:27 +0000 (-0400) Subject: util:wsgi: handle all dispatch() exceptions in BEExceptionApp X-Git-Tag: 1.1.0~8 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=ea9cc6e140481a3b804d464f1f49b1b57952fdcb;p=be.git util:wsgi: handle all dispatch() exceptions in BEExceptionApp This brings BEExceptionApp into closer agreement with libbe.ui.command_line.dispatch(), and avoids having the server go down when a user submits a silly command. --- diff --git a/libbe/util/wsgi.py b/libbe/util/wsgi.py index cd4fbed..8f407e4 100644 --- a/libbe/util/wsgi.py +++ b/libbe/util/wsgi.py @@ -58,14 +58,13 @@ try: except ImportError: OpenSSL = None - -import libbe.util.encoding -import libbe.util.http -import libbe.util.id import libbe.command import libbe.command.base import libbe.command.util import libbe.storage +import libbe.util.encoding +import libbe.util.http +import libbe.util.id if libbe.TESTING == True: @@ -316,12 +315,19 @@ class BEExceptionApp (WSGI_Middleware): raise libbe.util.wsgi.HandlerError(403, 'Read permission denied') except libbe.storage.NotWriteable as e: raise libbe.util.wsgi.HandlerError(403, 'Write permission denied') - except libbe.storage.InvalidID as e: - raise libbe.util.wsgi.HandlerError( - libbe.util.http.HTTP_USER_ERROR, 'InvalidID {}'.format(e)) - except libbe.util.id.NoIDMatches as e: + except (libbe.command.UsageError, + libbe.command.UserError, + OSError, + libbe.storage.ConnectionError, + libbe.util.http.HTTPError, + libbe.util.id.MultipleIDMatches, + libbe.util.id.NoIDMatches, + libbe.util.id.InvalidIDStructure, + libbe.storage.InvalidID, + ) as e: + msg = '{} {}'.format(type(e).__name__, format(e)) raise libbe.util.wsgi.HandlerError( - libbe.util.http.HTTP_USER_ERROR, 'NoIDMatches {}'.format(e)) + libbe.util.http.HTTP_USER_ERROR, msg) class UppercaseHeaderApp (WSGI_Middleware):