Merge pull request #5194 from timifasubaa/pass_error_link_separately

pass error message separately
This commit is contained in:
timifasubaa 2018-06-14 12:01:45 -07:00 committed by GitHub
commit 4b7a14de77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 11 deletions

View File

@ -25,6 +25,10 @@ class StackTraceMessage extends React.PureComponent {
return this.props.queryResponse && this.props.queryResponse.stacktrace;
}
hasLink() {
return this.props.queryResponse && this.props.queryResponse.link;
}
render() {
return (
<div className={`stack-trace-container${this.hasTrace() ? ' has-trace' : ''}`}>
@ -33,6 +37,9 @@ class StackTraceMessage extends React.PureComponent {
onClick={() => this.setState({ showStackTrace: !this.state.showStackTrace })}
>
{this.props.message}
{this.hasLink() &&
<a href={this.props.queryResponse.link}> (Request Access) </a>
}
</Alert>
{this.hasTrace() &&
<Collapse in={this.state.showStackTrace}>

View File

@ -41,11 +41,13 @@ def get_error_msg():
return error_msg
def json_error_response(msg=None, status=500, stacktrace=None, payload=None):
def json_error_response(msg=None, status=500, stacktrace=None, payload=None, link=None):
if not payload:
payload = {'error': str(msg)}
if stacktrace:
payload['stacktrace'] = stacktrace
if link:
payload['link'] = link
return Response(
json.dumps(payload, default=utils.json_iso_dttm_ser),
status=status, mimetype='application/json')

View File

@ -68,14 +68,7 @@ DATASOURCE_MISSING_ERR = __('The datasource seems to have been deleted')
ACCESS_REQUEST_MISSING_ERR = __(
'The access requests seem to have been deleted')
USER_MISSING_ERR = __('The user seems to have been deleted')
perms_instruction_link = config.get('PERMISSION_INSTRUCTIONS_LINK')
if perms_instruction_link:
DATASOURCE_ACCESS_ERR = __(
"You don't have access to this datasource. <a href='{}'>(Gain access)</a>"
.format(perms_instruction_link),
)
else:
DATASOURCE_ACCESS_ERR = __("You don't have access to this datasource")
DATASOURCE_ACCESS_ERR = __("You don't have access to this datasource")
FORM_DATA_KEY_BLACKLIST = []
if not config.get('ENABLE_JAVASCRIPT_CONTROLS'):
@ -1090,7 +1083,9 @@ class Superset(BaseSupersetView):
stacktrace=traceback.format_exc())
if not security_manager.datasource_access(viz_obj.datasource, g.user):
return json_error_response(DATASOURCE_ACCESS_ERR, status=404)
return json_error_response(
DATASOURCE_ACCESS_ERR, status=404, link=config.get(
'PERMISSION_INSTRUCTIONS_LINK'))
if csv:
return CsvResponse(
@ -2708,7 +2703,9 @@ class Superset(BaseSupersetView):
"""
viz_obj = self.get_viz(slice_id)
if not security_manager.datasource_access(viz_obj.datasource):
return json_error_response(DATASOURCE_ACCESS_ERR, status=401)
return json_error_response(
DATASOURCE_ACCESS_ERR, status=401, link=config.get(
'PERMISSION_INSTRUCTIONS_LINK'))
return self.get_query_string_response(viz_obj)