mirror of
https://github.com/getredash/redash.git
synced 2025-12-23 11:23:00 -05:00
Allow downloading CSV by query id and not just query_result id.
This commit is contained in:
@@ -252,8 +252,13 @@ class QueryResultsHandler(BaseAuthenticatedHandler):
|
|||||||
|
|
||||||
|
|
||||||
class CsvQueryResultsHandler(BaseAuthenticatedHandler):
|
class CsvQueryResultsHandler(BaseAuthenticatedHandler):
|
||||||
def get(self, query_result_id):
|
def get(self, query_id, result_id=None):
|
||||||
query_result = self.data_manager.get_query_result_by_id(query_result_id)
|
if not result_id:
|
||||||
|
query = data.models.Query.objects.get(pk=query_id)
|
||||||
|
if query:
|
||||||
|
result_id = query.latest_query_data_id
|
||||||
|
|
||||||
|
query_result = result_id and self.data_manager.get_query_result_by_id(result_id)
|
||||||
if query_result:
|
if query_result:
|
||||||
self.set_header("Content-Type", "text/csv; charset=UTF-8")
|
self.set_header("Content-Type", "text/csv; charset=UTF-8")
|
||||||
s = cStringIO.StringIO()
|
s = cStringIO.StringIO()
|
||||||
@@ -291,10 +296,10 @@ class JobsHandler(BaseAuthenticatedHandler):
|
|||||||
def get_application(static_path, is_debug, redis_connection, data_manager):
|
def get_application(static_path, is_debug, redis_connection, data_manager):
|
||||||
return tornado.web.Application([(r"/", MainHandler),
|
return tornado.web.Application([(r"/", MainHandler),
|
||||||
(r"/ping", PingHandler),
|
(r"/ping", PingHandler),
|
||||||
|
(r"/api/queries/([0-9]*)/results(?:/([0-9]*))?.csv", CsvQueryResultsHandler),
|
||||||
(r"/api/queries/format", QueryFormatHandler),
|
(r"/api/queries/format", QueryFormatHandler),
|
||||||
(r"/api/queries(?:/([0-9]*))?", QueriesHandler),
|
(r"/api/queries(?:/([0-9]*))?", QueriesHandler),
|
||||||
(r"/api/query_results(?:/([0-9]*))?", QueryResultsHandler),
|
(r"/api/query_results(?:/([0-9]*))?", QueryResultsHandler),
|
||||||
(r"/api/query_results/(.*?).csv", CsvQueryResultsHandler),
|
|
||||||
(r"/api/jobs/(.*)", JobsHandler),
|
(r"/api/jobs/(.*)", JobsHandler),
|
||||||
(r"/api/widgets(?:/([0-9]*))?", WidgetsHandler),
|
(r"/api/widgets(?:/([0-9]*))?", WidgetsHandler),
|
||||||
(r"/api/dashboards(?:/(.*))?", DashboardHandler),
|
(r"/api/dashboards(?:/(.*))?", DashboardHandler),
|
||||||
|
|||||||
@@ -139,7 +139,7 @@
|
|||||||
if ($scope.queryResult.getId() == null) {
|
if ($scope.queryResult.getId() == null) {
|
||||||
$scope.dataUri = "";
|
$scope.dataUri = "";
|
||||||
} else {
|
} else {
|
||||||
$scope.dataUri = '/api/query_results/' + $scope.queryResult.getId() + '.csv';
|
$scope.dataUri = '/api/queries/' + $scope.query.id + '/results/' + $scope.queryResult.getId() + '.csv';
|
||||||
$scope.dataFilename = $scope.query.name.replace(" ", "_") + moment($scope.queryResult.getUpdatedAt()).format("_YYYY_MM_DD") + ".csv";
|
$scope.dataFilename = $scope.query.name.replace(" ", "_") + moment($scope.queryResult.getUpdatedAt()).format("_YYYY_MM_DD") + ".csv";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user