Skip to content

Commit

Permalink
pass_error_message_separately
Browse files Browse the repository at this point in the history
  • Loading branch information
timifasubaa committed Jun 14, 2018
1 parent 6e37d3f commit 7a107fa
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 10 deletions.
1 change: 1 addition & 0 deletions superset/assets/src/chart/Chart.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ class Chart extends React.PureComponent {
<StackTraceMessage
message={this.props.chartAlert}
queryResponse={this.props.queryResponse}
resolutionLink={this.props.resolutionLink}
/>
}

Expand Down
9 changes: 9 additions & 0 deletions superset/assets/src/components/StackTraceMessage.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@ const propTypes = {
message: PropTypes.string,
queryResponse: PropTypes.object,
showStackTrace: PropTypes.bool,
resolutionLink: PropTypes.string,
};
const defaultProps = {
showStackTrace: false,
resolutionLink: '',
};

class StackTraceMessage extends React.PureComponent {
Expand All @@ -25,6 +27,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' : ''}`}>
Expand All @@ -33,6 +39,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}>
Expand Down
4 changes: 3 additions & 1 deletion superset/views/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down
13 changes: 4 additions & 9 deletions superset/views/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,7 @@
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'):
Expand Down Expand Up @@ -1090,7 +1083,9 @@ def generate_json(self, datasource_type, datasource_id, form_data,
stacktrace=traceback.format_exc())

if not security_manager.datasource_access(viz_obj.datasource, g.user):
return json_error_response(DATASOURCE_ACCESS_ERR, status=404)
perms_instruction_link = config.get('PERMISSION_INSTRUCTIONS_LINK')
return json_error_response(
DATASOURCE_ACCESS_ERR, status=404, link=perms_instruction_link)

if csv:
return CsvResponse(
Expand Down

0 comments on commit 7a107fa

Please sign in to comment.