Skip to content

Commit

Permalink
Unpack gps data into altitude, presion, latitude and longitude columns
Browse files Browse the repository at this point in the history
  • Loading branch information
WinnyTroy committed Aug 28, 2020
1 parent 454e89e commit 8a15303
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
11 changes: 9 additions & 2 deletions onadata/apps/api/tests/viewsets/test_open_data_viewset.py
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,6 @@ def test_tableau_data_fetch(self): # pylint: disable=invalid-name
'children_3__childs_name',
'children_4__childs_age',
'children_4__childs_name',
'gps',
'has_children',
'meta_instanceID',
'name',
Expand Down Expand Up @@ -435,13 +434,21 @@ def test_tableau_get_repeat_data(self):
self.assertEqual(response.status_code, 200)
# cast generator response to list for easy manipulation
row_data = streaming_data(response)
# Test that Tableau receives this data
# Test that Tableau receives group data
self.assertEqual(
row_data[0]['children_1__childs_name'],
'Tom')
self.assertEqual(
row_data[0]['children_2__childs_age'],
5)
# Test that gps data is unpacked for Tableau appropriately.
self.assertEqual(
row_data[0]['_gps_latitude'],
'-1.2625621')
self.assertEqual(
row_data[0]['_gps_longitude'],
'36.7921711')


def test_tableau_get_nested_repeat_group_data(self):
"""
Expand Down
13 changes: 12 additions & 1 deletion onadata/apps/api/viewsets/open_data_viewset.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from onadata.apps.logger.models import Instance
from onadata.apps.logger.models.open_data import OpenData
from onadata.apps.logger.models.xform import XForm, question_types_to_exclude
from onadata.apps.viewer.models.data_dictionary import DataDictionary
from onadata.libs.data import parse_int
from onadata.libs.utils.logger_tools import remove_metadata_fields
from onadata.libs.mixins.cache_control_mixin import CacheControlMixin
Expand Down Expand Up @@ -119,8 +120,18 @@ def get_ordered_repeat_value(key, item, index):
try:
qstn_type = xform.get_element(key).type
if qstn_type == MULTIPLE_SELECT_TYPE:
data = get_updated_data_dict(
flat_dict = get_updated_data_dict(
key, value, flat_dict)
if qstn_type == 'geopoint':
parts = value.split(' ')
gps_xpaths = \
DataDictionary.get_additional_geopoint_xpaths(
key)
gps_parts = dict(
[(xpath, None) for xpath in gps_xpaths])
if len(parts) == 4:
gps_parts = dict(zip(gps_xpaths, parts))
flat_dict.update(gps_parts)
else:
flat_dict[key] = value
except AttributeError:
Expand Down

0 comments on commit 8a15303

Please sign in to comment.