コード例 #1
0
def _query_results_to_xlsx(query_results: DocumentQueryResults) -> HttpResponse:
    from openpyxl import Workbook
    from openpyxl.writer.excel import save_virtual_workbook
    from openpyxl.styles import Font, Alignment

    wb = Workbook()
    ws = wb.active
    ws.append(query_results.column_titles)
    for cells in ws.rows:
        for cell in cells:
            cell.font = Font(name=cell.font.name, bold=True)
            cell.alignment = Alignment(horizontal='center')
        break

    for row in query_results.fetch():
        ws.append(row)

    def str_len(value):
        return len(str(value)) if value is not None else 0

    for column_cells in ws.columns:
        length = min(max(str_len(cell.value) for cell in column_cells), 100) + 1
        ws.column_dimensions[column_cells[0].column_letter].width = length

    response = HttpResponse(save_virtual_workbook(wb),
                            content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
    response['Content-Disposition'] = 'attachment; filename=export.xlsx'
    return response
コード例 #2
0
ファイル: v1.py プロジェクト: tx-anin/lexpredict-contraxsuite
def _query_results_to_csv(
        query_results: DocumentQueryResults) -> StreamingHttpResponse:
    resp = StreamingHttpResponse(csv_gen(query_results.column_codes,
                                         query_results.fetch(),
                                         query_results.column_titles),
                                 content_type='text/csv')
    resp['Content-Disposition'] = 'attachment; filename="export.csv"'
    return resp
コード例 #3
0
def _query_results_to_json(query_results: DocumentQueryResults, exec_time: float) -> Response:
    res = {
        'offset': query_results.offset,
        'limit': query_results.limit,
        'total_documents': query_results.total,
        'reviewed_documents': query_results.reviewed,
        'items': GeneratorList(query_results.fetch_dicts()),
        'time': exec_time
    }
    return Response({k: v for k, v in res.items() if v is not None})
コード例 #4
0
def _query_results_to_json(query_results: DocumentQueryResults,
                           exec_time: float) -> Dict[str, Any]:
    """
    Returns document query results as a dictionary ready for json output.
    Documents (items) are returned as a generator-backed list. This allows using the returned dict in
    streaming json generation.
    :param query_results:
    :param exec_time:
    :return:
    """
    res = {
        'offset': query_results.offset,
        'limit': query_results.limit,
        'total_documents': query_results.total,
        'reviewed_documents': query_results.reviewed,
        'items': GeneratorList(query_results.fetch_dicts()),
        'time': exec_time
    }
    return {k: v for k, v in res.items() if v is not None}