From 4fec6e95e5c1b7a74a764d907d9b5dfc540a7473 Mon Sep 17 00:00:00 2001 From: rgraber Date: Thu, 18 Dec 2025 09:37:15 -0500 Subject: [PATCH 1/2] feat(subsequences): handle new form of qual data from kpi --- src/formpack/schema/fields.py | 7 ++-- tests/fixtures/analysis_form/v1.json | 6 ++-- tests/fixtures/analysis_form/v2.json | 6 ++-- tests/fixtures/analysis_form_advanced/v1.json | 32 +++++++++---------- 4 files changed, 24 insertions(+), 27 deletions(-) diff --git a/src/formpack/schema/fields.py b/src/formpack/schema/fields.py index 1878a33..d8229d8 100644 --- a/src/formpack/schema/fields.py +++ b/src/formpack/schema/fields.py @@ -544,11 +544,8 @@ def get_value_from_entry(self, entry): except KeyError: return '' - # sure would be nice if this were a dict with uuids as keys instead of - # a list requiring this kind of iteration - for response in responses: - if response['uuid'] == field_uuid: - return response['value'] + if question_response := responses.get(field_uuid): + return question_response['value'] return '' diff --git a/tests/fixtures/analysis_form/v1.json b/tests/fixtures/analysis_form/v1.json index dac01cb..3938dd8 100644 --- a/tests/fixtures/analysis_form/v1.json +++ b/tests/fixtures/analysis_form/v1.json @@ -65,12 +65,12 @@ } }, "clerk_details/name_of_clerk": { - "qual": [ - { + "qual": { + "uuid_for_comment": { "uuid": "uuid_for_comment", "value": "Sounds like an interesting person" } - ] + } } } }, diff --git a/tests/fixtures/analysis_form/v2.json b/tests/fixtures/analysis_form/v2.json index cfd8877..e4883e6 100644 --- a/tests/fixtures/analysis_form/v2.json +++ b/tests/fixtures/analysis_form/v2.json @@ -59,12 +59,12 @@ } }, "clerk_details/name_of_shop": { - "qual": [ - { + "qual": { + "uuid_for_comment": { "uuid": "uuid_for_comment", "value": "Pretty cliche" } - ] + } } } }, diff --git a/tests/fixtures/analysis_form_advanced/v1.json b/tests/fixtures/analysis_form_advanced/v1.json index 42e9c28..6ba740e 100644 --- a/tests/fixtures/analysis_form_advanced/v1.json +++ b/tests/fixtures/analysis_form_advanced/v1.json @@ -83,8 +83,8 @@ "value": "Hello how may I help you?", "languageCode": "en" }, - "qual": [ - { + "qual": { + "uuid_for_tone_of_voice": { "uuid": "uuid_for_tone_of_voice", "value": [ { @@ -101,15 +101,15 @@ } ] } - ] + } }, "clerk_interactions/goods_sold": { - "qual": [ - { + "qual": { + "uuid_for_comment": { "uuid": "uuid_for_comment", "value": "Not much diversity" }, - { + "uuid_for_rating": { "uuid": "uuid_for_rating", "value": { "uuid": "uuid_for_3", @@ -118,7 +118,7 @@ } } } - ] + } } } }, @@ -137,8 +137,8 @@ "value": "Thank you for your business", "languageCode": "en" }, - "qual": [ - { + "qual": { + "uuid_for_tone_of_voice": { "uuid": "uuid_for_tone_of_voice", "value": [ { @@ -155,11 +155,11 @@ } ] } - ] + } }, "clerk_interactions/goods_sold": { - "qual": [ - { + "qual": { + "uuid_for_rating": { "uuid": "uuid_for_rating", "value": { "uuid": "uuid_for_2", @@ -168,7 +168,7 @@ } } } - ] + } } } }, @@ -183,8 +183,8 @@ ], "_supplementalDetails": { "clerk_interactions/goods_sold": { - "qual": [ - { + "qual": { + "uuid_for_rating": { "uuid": "uuid_for_rating", "value": { "uuid": "uuid_for_3", @@ -193,7 +193,7 @@ } } } - ] + } } } } From b56cff67588aed9a451bb7c4a29cbd318db169ef Mon Sep 17 00:00:00 2001 From: rgraber Date: Thu, 18 Dec 2025 11:48:13 -0500 Subject: [PATCH 2/2] fixup!: remove redundant uuid --- tests/fixtures/analysis_form/v1.json | 1 - tests/fixtures/analysis_form/v2.json | 1 - tests/fixtures/analysis_form_advanced/v1.json | 6 ------ 3 files changed, 8 deletions(-) diff --git a/tests/fixtures/analysis_form/v1.json b/tests/fixtures/analysis_form/v1.json index 3938dd8..c394687 100644 --- a/tests/fixtures/analysis_form/v1.json +++ b/tests/fixtures/analysis_form/v1.json @@ -67,7 +67,6 @@ "clerk_details/name_of_clerk": { "qual": { "uuid_for_comment": { - "uuid": "uuid_for_comment", "value": "Sounds like an interesting person" } } diff --git a/tests/fixtures/analysis_form/v2.json b/tests/fixtures/analysis_form/v2.json index e4883e6..306a096 100644 --- a/tests/fixtures/analysis_form/v2.json +++ b/tests/fixtures/analysis_form/v2.json @@ -61,7 +61,6 @@ "clerk_details/name_of_shop": { "qual": { "uuid_for_comment": { - "uuid": "uuid_for_comment", "value": "Pretty cliche" } } diff --git a/tests/fixtures/analysis_form_advanced/v1.json b/tests/fixtures/analysis_form_advanced/v1.json index 6ba740e..aab8766 100644 --- a/tests/fixtures/analysis_form_advanced/v1.json +++ b/tests/fixtures/analysis_form_advanced/v1.json @@ -85,7 +85,6 @@ }, "qual": { "uuid_for_tone_of_voice": { - "uuid": "uuid_for_tone_of_voice", "value": [ { "uuid": "uuid_for_excited", @@ -106,11 +105,9 @@ "clerk_interactions/goods_sold": { "qual": { "uuid_for_comment": { - "uuid": "uuid_for_comment", "value": "Not much diversity" }, "uuid_for_rating": { - "uuid": "uuid_for_rating", "value": { "uuid": "uuid_for_3", "labels": { @@ -139,7 +136,6 @@ }, "qual": { "uuid_for_tone_of_voice": { - "uuid": "uuid_for_tone_of_voice", "value": [ { "uuid": "uuid_for_anxious", @@ -160,7 +156,6 @@ "clerk_interactions/goods_sold": { "qual": { "uuid_for_rating": { - "uuid": "uuid_for_rating", "value": { "uuid": "uuid_for_2", "labels": { @@ -185,7 +180,6 @@ "clerk_interactions/goods_sold": { "qual": { "uuid_for_rating": { - "uuid": "uuid_for_rating", "value": { "uuid": "uuid_for_3", "labels": {