diff --git a/client/app/components/queries/query-results-link.js b/client/app/components/queries/query-results-link.js index c1a1b1249..cccfa00b3 100644 --- a/client/app/components/queries/query-results-link.js +++ b/client/app/components/queries/query-results-link.js @@ -13,8 +13,20 @@ function queryResultLink() { if (scope.queryResult.getId() == null) { element.attr('href', ''); } else { - element.attr('href', `api/queries/${scope.query.id}/results/${scope.queryResult.getId()}.${fileType}${scope.embed ? `?api_key=${scope.apiKey}` : ''}`); - element.attr('download', `${scope.query.name.replace(' ', '_') + moment(scope.queryResult.getUpdatedAt()).format('_YYYY_MM_DD')}.${fileType}`); + let url; + if (scope.query.id) { + url = `api/queries/${scope.query.id}/results/${scope.queryResult.getId()}.${fileType}${scope.embed + ? `?api_key=${scope.apiKey}` + : ''}`; + } else { + url = `api/query_results/${scope.queryResult.getId()}.${fileType}`; + } + element.attr('href', url); + element.attr( + 'download', + `${scope.query.name.replace(' ', '_') + + moment(scope.queryResult.getUpdatedAt()).format('_YYYY_MM_DD')}.${fileType}`, + ); } }); }, diff --git a/redash/handlers/api.py b/redash/handlers/api.py index 0e1003c7e..f55524665 100644 --- a/redash/handlers/api.py +++ b/redash/handlers/api.py @@ -79,6 +79,7 @@ api.add_org_resource(CheckPermissionResource, '/api///ac api.add_org_resource(QueryResultListResource, '/api/query_results', endpoint='query_results') api.add_org_resource(QueryResultResource, + '/api/query_results/.', '/api/query_results/', '/api/queries//results.', '/api/queries//results/.',