コード例 #1
0
ファイル: controllers.py プロジェクト: lifey/redash
    def get(self, query_id, query_result_id=None):
        if not query_result_id:
            query = models.Query.get(models.Query.id == query_id)
            if query:
                query_result_id = query._data['latest_query_data']

        query_result = query_result_id and data_manager.get_query_result_by_id(
            query_result_id)
        if query_result:
            s = cStringIO.StringIO()

            query_data = json.loads(query_result.data)
            writer = csv.DictWriter(
                s, fieldnames=[col['name'] for col in query_data['columns']])
            writer.writer = utils.UnicodeWriter(s)
            writer.writeheader()
            for row in query_data['rows']:
                for k, v in row.iteritems():
                    if isinstance(
                            v,
                            numbers.Number) and (v > 1000 * 1000 * 1000 * 100):
                        row[k] = datetime.datetime.fromtimestamp(v / 1000.0)

                writer.writerow(row)

            return make_response(s.getvalue(), 200,
                                 {'Content-Type': "text/csv; charset=UTF-8"})
        else:
            abort(404)
コード例 #2
0
    def get(self, query_id, query_result_id=None):
        if not query_result_id:
            query = models.Query.get(models.Query.id == query_id)
            if query:
                query_result_id = query._data['latest_query_data']

        query_result = query_result_id and models.QueryResult.get_by_id(
            query_result_id)
        if query_result:
            s = cStringIO.StringIO()

            query_data = json.loads(query_result.data)
            writer = csv.DictWriter(
                s, fieldnames=[col['name'] for col in query_data['columns']])
            writer.writer = utils.UnicodeWriter(s)
            writer.writeheader()
            for row in query_data['rows']:
                for k, v in row.iteritems():
                    try:
                        date = from_utc(v)
                        row[k] = date
                    except:
                        False
                writer.writerow(row)

            return make_response(s.getvalue(), 200,
                                 {'Content-Type': "text/csv; charset=UTF-8"})
        else:
            abort(404)
コード例 #3
0
ファイル: __init__.py プロジェクト: vatsaluc/redashuc
    def make_csv_content(self):
        s = cStringIO.StringIO()

        query_data = json_loads(self.data)
        writer = csv.DictWriter(s, extrasaction="ignore", fieldnames=[col['name'] for col in query_data['columns']])
        writer.writer = utils.UnicodeWriter(s)
        writer.writeheader()
        for row in query_data['rows']:
            writer.writerow(row)

        return s.getvalue()
コード例 #4
0
ファイル: query_results.py プロジェクト: tomkanjam/r2
    def make_csv_response(query_result):
        s = cStringIO.StringIO()

        query_data = json.loads(query_result.data)
        writer = csv.DictWriter(s, fieldnames=[col['name'] for col in query_data['columns']])
        writer.writer = utils.UnicodeWriter(s)
        writer.writeheader()
        for row in query_data['rows']:
            writer.writerow(row)

        headers = {'Content-Type': "text/csv; charset=UTF-8"}
        return make_response(s.getvalue(), 200, headers)
コード例 #5
0
    def csv_response(query_result):
        s = cStringIO.StringIO()

        query_data = json.loads(query_result.data)
        writer = csv.DictWriter(
            s, fieldnames=[col['name'] for col in query_data['columns']])
        writer.writer = utils.UnicodeWriter(s)
        writer.writeheader()
        for row in query_data['rows']:
            for k, v in row.iteritems():
                if isinstance(
                        v, numbers.Number) and (v > 1000 * 1000 * 1000 * 100):
                    row[k] = datetime.datetime.fromtimestamp(v / 1000.0)

            writer.writerow(row)

        headers = {'Content-Type': "text/csv; charset=UTF-8"}
        headers.update(cache_headers)
        return make_response(s.getvalue(), 200, headers)