From e1b1c916f545d624bc986b57b8ef25a759c12345 Mon Sep 17 00:00:00 2001 From: Odumosu Dipo Date: Fri, 21 May 2021 18:30:31 +0100 Subject: [PATCH 1/4] feat: include serial in exports for surveys see: nditech/apollo-issues#153 --- apollo/submissions/services.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apollo/submissions/services.py b/apollo/submissions/services.py index 61feb94c9..be50fc104 100644 --- a/apollo/submissions/services.py +++ b/apollo/submissions/services.py @@ -68,6 +68,9 @@ def export_list(self, query): if submission.submission_type == 'O': dataset_headers.append(_('Comment')) + if form.form_type == 'SURVEY': + dataset_headers.insert(1, _('Serial')) + output = StringIO() output.write(constants.BOM_UTF8_STR) writer = csv.writer(output) @@ -108,6 +111,9 @@ def export_list(self, query): for tag in tags ] + if form.form_type == 'SURVEY': + record.insert(1, submission.serial_no) + record += [ submission.updated.strftime('%Y-%m-%d %H:%M:%S') if submission.updated else '', @@ -152,6 +158,9 @@ def export_list(self, query): export_field_value(form, submission, tag) for tag in tags] + if form.form_type == 'SURVEY': + record.insert(1, sib.serial_no) + record += [ sib.updated.strftime('%Y-%m-%d %H:%M:%S') if sib.updated else ''] + [ From fb272ba40f3cefb2955e54bf5141d51822339a5e Mon Sep 17 00:00:00 2001 From: Odumosu Dipo Date: Fri, 21 May 2021 18:31:47 +0100 Subject: [PATCH 2/4] fix: use default if participant isn't updated --- apollo/submissions/views_submissions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apollo/submissions/views_submissions.py b/apollo/submissions/views_submissions.py index c32c3c879..63c511412 100644 --- a/apollo/submissions/views_submissions.py +++ b/apollo/submissions/views_submissions.py @@ -425,8 +425,8 @@ def submission_list(form_id): 'participant': s.participant.name, 'participant_id': s.participant.participant_id, 'phone': s.participant.primary_phone, - 'last_updated': s.participant_updated.strftime('%b %d, %Y %l:%M %p'), # noqa - 'last_updated_timestamp': s.participant_updated.strftime('%s'), # noqa + 'last_updated': s.participant_updated.strftime('%b %d, %Y %l:%M %p') if s.participant_updated else '', # noqa + 'last_updated_timestamp': s.participant_updated.strftime('%s') if s.participant_updated else '', # noqa })) feature_collection = geojson.FeatureCollection(features) From 650d77c9f7e1880641259c953ba259e2377e6bf5 Mon Sep 17 00:00:00 2001 From: Odumosu Dipo Date: Fri, 21 May 2021 18:45:57 +0100 Subject: [PATCH 3/4] feat: change default value --- apollo/submissions/views_submissions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apollo/submissions/views_submissions.py b/apollo/submissions/views_submissions.py index 63c511412..aa54a3543 100644 --- a/apollo/submissions/views_submissions.py +++ b/apollo/submissions/views_submissions.py @@ -425,8 +425,8 @@ def submission_list(form_id): 'participant': s.participant.name, 'participant_id': s.participant.participant_id, 'phone': s.participant.primary_phone, - 'last_updated': s.participant_updated.strftime('%b %d, %Y %l:%M %p') if s.participant_updated else '', # noqa - 'last_updated_timestamp': s.participant_updated.strftime('%s') if s.participant_updated else '', # noqa + 'last_updated': s.participant_updated.strftime('%b %d, %Y %l:%M %p') if s.participant_updated else None, # noqa + 'last_updated_timestamp': s.participant_updated.strftime('%s') if s.participant_updated else None, # noqa })) feature_collection = geojson.FeatureCollection(features) From b1845408b7bdd3f93e0f779853653892dfe09b84 Mon Sep 17 00:00:00 2001 From: Odumosu Dipo Date: Sat, 22 May 2021 05:22:36 +0100 Subject: [PATCH 4/4] chore: move columns around --- apollo/submissions/services.py | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/apollo/submissions/services.py b/apollo/submissions/services.py index be50fc104..c2302b381 100644 --- a/apollo/submissions/services.py +++ b/apollo/submissions/services.py @@ -51,7 +51,12 @@ def export_list(self, query): sample_headers = [s.name for s in samples] - dataset_headers = [ + if form.form_type == 'SURVEY': + dataset_headers = [_('Serial')] + else: + dataset_headers = [] + + dataset_headers.extend([ _('Participant ID'), _('Name'), _('DB Phone'), _('Recent Phone') ] + [ loc_type.name for loc_type in location_types @@ -59,7 +64,7 @@ def export_list(self, query): _('Location'), _('Location Code'), _('Latitude'), _('Longitude') ] + extra_field_headers + [ _('Registered Voters') - ] + tags + [_('Timestamp')] + ] + tags + [_('Timestamp')]) if form.form_type == 'INCIDENT': dataset_headers.extend([_('Status'), _('Description')]) @@ -68,9 +73,6 @@ def export_list(self, query): if submission.submission_type == 'O': dataset_headers.append(_('Comment')) - if form.form_type == 'SURVEY': - dataset_headers.insert(1, _('Serial')) - output = StringIO() output.write(constants.BOM_UTF8_STR) writer = csv.writer(output) @@ -88,14 +90,16 @@ def export_list(self, query): else: extra_data_columns = [''] * len(extra_fields) - record = [ + record = [submission.serial_no] if form.form_type == 'SURVEY' else [] # noqa + + record.extend([ submission.participant.participant_id if submission.participant else '', submission.participant.name if submission.participant else '', submission.participant.primary_phone if submission.participant else '', - submission.last_phone_number if submission.last_phone_number else '', + submission.last_phone_number if submission.last_phone_number else '', # noqa ] + [ submission.location.make_path().get(loc_type.name, '') for loc_type in location_types @@ -109,10 +113,7 @@ def export_list(self, query): ] + [ export_field_value(form, submission, tag) for tag in tags - ] - - if form.form_type == 'SURVEY': - record.insert(1, submission.serial_no) + ]) record += [ submission.updated.strftime('%Y-%m-%d %H:%M:%S') @@ -136,7 +137,10 @@ def export_list(self, query): ] else: extra_data_columns = [''] * len(extra_fields) - record = [ + + record = [sib.serial_no] if form.form_type == 'SURVEY' else [] + + record.extend([ sib.participant.participant_id if sib.participant else '', sib.participant.name @@ -156,10 +160,7 @@ def export_list(self, query): sib.location.registered_voters ] + [ export_field_value(form, submission, tag) - for tag in tags] - - if form.form_type == 'SURVEY': - record.insert(1, sib.serial_no) + for tag in tags]) record += [ sib.updated.strftime('%Y-%m-%d %H:%M:%S')