From 739ec8a07774d61cbabd2d6fc4f8aafd05909d0b Mon Sep 17 00:00:00 2001 From: Dibik Date: Tue, 3 Sep 2024 19:40:04 +0530 Subject: [PATCH 1/2] G2P-2808: Fixes for subentires mapping and ODK record count --- g2p_odk_importer/models/odk_client.py | 13 ++++++++++--- g2p_odk_importer/models/odk_import.py | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/g2p_odk_importer/models/odk_client.py b/g2p_odk_importer/models/odk_client.py index a3222f0..6b1287c 100644 --- a/g2p_odk_importer/models/odk_client.py +++ b/g2p_odk_importer/models/odk_client.py @@ -96,7 +96,7 @@ def import_delta_records(self, last_sync_timestamp=None, skip=0): parser.parse(x["submission_time"]) if x.get("submission_time") not in (None, "") else None, ), ) - + partner_count = 0 for member in data["value"]: _logger.info("ODK RAW DATA:%s" % member) try: @@ -112,13 +112,15 @@ def import_delta_records(self, last_sync_timestamp=None, skip=0): updated_mapped_json = self.get_addl_data(mapped_json) self.env["res.partner"].sudo().create(updated_mapped_json) - + partner_count += 1 data.update({"form_updated": True}) except Exception as e: data.update({"form_failed": True}) _logger.error("An exception occurred%s" % e) raise ValidationError(f"The following errors occurred:\n{e}") from e + data.update({"partner_count": partner_count}) + return data def handle_one2many_fields(self, mapped_json): @@ -308,9 +310,14 @@ def import_record_by_instance_id(self, instance_id): f"Submissions('{instance_id}')" ) headers = {"Authorization": f"Bearer {self.session}"} + params = { + "$skip": 0, + "$count": "true", + "$expand": "*", + } try: - response = requests.get(url, headers=headers, timeout=10) + response = requests.get(url, headers=headers, params=params, timeout=10) response.raise_for_status() data = response.json() except requests.RequestException as e: diff --git a/g2p_odk_importer/models/odk_import.py b/g2p_odk_importer/models/odk_import.py index 77744b7..3a50d86 100644 --- a/g2p_odk_importer/models/odk_import.py +++ b/g2p_odk_importer/models/odk_import.py @@ -150,7 +150,7 @@ def import_records(self): client.login() imported = client.import_delta_records(last_sync_timestamp=config.last_sync_time) if "form_updated" in imported: - message = "ODK form records were imported successfully." + message = f"ODK form {imported.get('partner_count')} records were imported successfully." types = "success" config.update({"last_sync_time": fields.Datetime.now()}) elif "form_failed" in imported: From f35d95e31a0e91bcd86e3190f1dd451ec3333ef4 Mon Sep 17 00:00:00 2001 From: Dibik Date: Tue, 3 Sep 2024 19:58:12 +0530 Subject: [PATCH 2/2] testcase issue fixed --- g2p_odk_importer/models/odk_import.py | 3 ++- g2p_odk_importer/tests/test_odk_import.py | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/g2p_odk_importer/models/odk_import.py b/g2p_odk_importer/models/odk_import.py index 3a50d86..8034ba2 100644 --- a/g2p_odk_importer/models/odk_import.py +++ b/g2p_odk_importer/models/odk_import.py @@ -150,7 +150,8 @@ def import_records(self): client.login() imported = client.import_delta_records(last_sync_timestamp=config.last_sync_time) if "form_updated" in imported: - message = f"ODK form {imported.get('partner_count')} records were imported successfully." + partner_count = imported.get("partner_count", 0) + message = f"ODK form {partner_count} records were imported successfully." types = "success" config.update({"last_sync_time": fields.Datetime.now()}) elif "form_failed" in imported: diff --git a/g2p_odk_importer/tests/test_odk_import.py b/g2p_odk_importer/tests/test_odk_import.py index 3d50f81..84d30cd 100644 --- a/g2p_odk_importer/tests/test_odk_import.py +++ b/g2p_odk_importer/tests/test_odk_import.py @@ -52,7 +52,7 @@ def test_test_connection(self, mock_test_connection, mock_login): @patch.object(ODKClient, "login") @patch.object(ODKClient, "import_delta_records") def test_import_records(self, mock_import_delta_records, mock_login): - mock_import_delta_records.return_value = {"form_updated": True} + mock_import_delta_records.return_value = {"form_updated": True, "partner_count": 5} mock_login.return_value = None odk_import = self.env["odk.import"].create( @@ -67,8 +67,11 @@ def test_import_records(self, mock_import_delta_records, mock_login): self.assertTrue(mock_login.called) self.assertTrue(mock_import_delta_records.called) + + expected_message = "ODK form 5 records were imported successfully." + self.assertEqual(result["params"]["type"], "success") - self.assertEqual(result["params"]["message"], "ODK form records were imported successfully.") + self.assertEqual(result["params"]["message"], expected_message) @patch.object(ODKClient, "login") @patch.object(ODKClient, "import_delta_records")