From 9b879e9cb0df2dbe2306be164c06ca943769f303 Mon Sep 17 00:00:00 2001 From: Jochen Klar Date: Tue, 24 Apr 2018 20:16:08 +0200 Subject: [PATCH] Fix NaN in query results --- daiquiri/core/utils.py | 11 +++++++++++ daiquiri/query/viewsets.py | 6 +++--- testing/sql/postgres.sql | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/daiquiri/core/utils.py b/daiquiri/core/utils.py index 8b3d2b47..1b8b3365 100644 --- a/daiquiri/core/utils.py +++ b/daiquiri/core/utils.py @@ -2,6 +2,7 @@ import ipaddress import importlib +import math import re from django import forms @@ -169,6 +170,16 @@ def make_query_dict_upper_case(input_dict): return output_dict +def replace_nan(elements): + for i, element in enumerate(elements): + if isinstance(element, (list, tuple)): + replace_nan(element) + else: + if math.isnan(element): + print('-->', elements[i]) + elements[i] = None + + def send_mail(request, template_prefix, context, to_emails, cc_emails=[], bcc_emails=[]): ''' This is heavily inspired by allauth.account.adapter. diff --git a/daiquiri/query/viewsets.py b/daiquiri/query/viewsets.py index bcc85c2b..9abfb545 100644 --- a/daiquiri/query/viewsets.py +++ b/daiquiri/query/viewsets.py @@ -17,12 +17,10 @@ TokenAuthentication ) -from django_filters.rest_framework import DjangoFilterBackend - from daiquiri.core.viewsets import ChoicesViewSet, RowViewSetMixin from daiquiri.core.permissions import HasModelPermission from daiquiri.core.paginations import ListPagination -from daiquiri.core.utils import get_client_ip +from daiquiri.core.utils import get_client_ip, replace_nan from daiquiri.jobs.viewsets import SyncJobViewSet, AsyncJobViewSet from .models import QueryJob, DownloadJob, QueryArchiveJob, Example @@ -171,6 +169,8 @@ def rows(self, request, pk=None): # get the count and the rows from the job count, results = job.rows(column_names, ordering, page, page_size, search, filters) + replace_nan(results) + # return ordered dict to be send as json return Response(OrderedDict(( ('count', count), diff --git a/testing/sql/postgres.sql b/testing/sql/postgres.sql index 41046736..8e67e455 100644 --- a/testing/sql/postgres.sql +++ b/testing/sql/postgres.sql @@ -85,7 +85,7 @@ GRANT SELECT ON ALL TABLES IN SCHEMA daiquiri_data_obs TO daiquiri_data; INSERT INTO daiquiri_data_test.test VALUES (1, TRUE, '{1, 2, 3, 4, 5}', '{{1, 10}, {0, 0.1}}'), (2, TRUE, '{2, 4, 6, 8, 10}', '{{2, 20}, {0, 0.2}}'), -(3, FALSE, '{3, 6, 9, 12, 15}', '{{3, 30}, {0, 0.3}}'); +(3, FALSE, '{3, 6, Nan, 12, 15}', '{{3, 30}, {0, 0.3}}'); INSERT INTO daiquiri_archive.files VALUES ('074fec76-6143-4d58-a1f6-a7e8c23af15e', '2017-10-01 00:00:00', 'image_01.jpg', 'c01', 'images/image_01.jpg', 5.810915172365783, -27.665464907831577),