def boto_error_handler(request, location=None, template="{0}"): try: yield except ClientError as err: old_err = BotoServerError( status=err.response.get('ResponseMetadata').get('HTTPStatusCode'), reason=err.response.get('Error').get('Code') ) old_err.message = err.response.get('Error').get('Message') old_err.error_code = err.response.get('Error').get('Code') BaseView.handle_error(err=old_err, request=request, location=location, template=template) except BotoServerError as err: BaseView.handle_error(err=err, request=request, location=location, template=template) except socket.error as err: BaseView.handle_error(err=BotoServerError(504, str(err)), request=request, location=location, template=template)