diff --git a/g2p_odk_importer/models/odk_client.py b/g2p_odk_importer/models/odk_client.py
index 7750042..9832939 100644
--- a/g2p_odk_importer/models/odk_client.py
+++ b/g2p_odk_importer/models/odk_client.py
@@ -89,6 +89,7 @@ def import_delta_records(self, last_sync_timestamp=None, skip=0, top=100):
raise ValidationError(f"Failed to parse response: {e}") from e
for member in data["value"]:
+ _logger.info("ODK RAW DATA:%s" % member)
try:
mapped_json = pyjq.compile(self.json_formatter).all(member)[0]
if self.target_registry == "individual":
@@ -101,11 +102,7 @@ def import_delta_records(self, last_sync_timestamp=None, skip=0, top=100):
updated_mapped_json = self.get_addl_data(mapped_json)
- existing_partner = self.find_existing_partner(mapped_json)
- if existing_partner:
- existing_partner.write(updated_mapped_json)
- else:
- self.env["res.partner"].sudo().create(updated_mapped_json)
+ self.env["res.partner"].sudo().create(updated_mapped_json)
data.update({"form_updated": True})
except Exception as e:
@@ -214,20 +211,6 @@ def handle_media_import(self, member, mapped_json):
)
]
- def find_existing_partner(self, mapped_json):
- if "reg_ids" not in mapped_json:
- return None
- for reg_id_tuple in mapped_json["reg_ids"]:
- reg_id = reg_id_tuple[2]
- id_type_id = self.env["g2p.id.type"].search([("id", "=", reg_id["id_type"])], limit=1).id
- existing_partner = self.env["res.partner"].search(
- [("reg_ids.id_type", "=", id_type_id), ("reg_ids.value", "=", reg_id["value"])], limit=1
- )
- if existing_partner:
- mapped_json["reg_ids"].remove(reg_id_tuple)
- return existing_partner
- return None
-
def get_member_kind(self, record):
kind_as_str = record.get("kind", None)
kind = self.env["g2p.group.membership.kind"].search([("name", "=", kind_as_str)], limit=1)
diff --git a/g2p_odk_importer/models/odk_config.py b/g2p_odk_importer/models/odk_config.py
index 999455e..350a90f 100644
--- a/g2p_odk_importer/models/odk_config.py
+++ b/g2p_odk_importer/models/odk_config.py
@@ -13,3 +13,5 @@ class OdkConfig(models.Model):
base_url = fields.Char(string="Base URL", required=True)
username = fields.Char(required=True)
password = fields.Char(required=True)
+ project = fields.Char(required=False)
+ form_id = fields.Char(string="Form ID", required=False)
diff --git a/g2p_odk_importer/models/odk_import.py b/g2p_odk_importer/models/odk_import.py
index 990e6a6..90e3eb7 100644
--- a/g2p_odk_importer/models/odk_import.py
+++ b/g2p_odk_importer/models/odk_import.py
@@ -16,8 +16,7 @@ class OdkImport(models.Model):
_description = "ODK Import"
odk_config = fields.Many2one("odk.config", string="ODK Config", required=True)
- project = fields.Char(required=False)
- form_id = fields.Char(string="Form ID", required=False)
+ odk_config_name = fields.Char(related="odk_config.name")
json_formatter = fields.Text(string="JSON Formatter", required=True)
target_registry = fields.Selection([("individual", "Individual"), ("group", "Group")], required=True)
last_sync_time = fields.Datetime(string="Last synced on", required=False)
@@ -57,8 +56,8 @@ def test_connection(self):
config.odk_config.base_url,
config.odk_config.username,
config.odk_config.password,
- config.project,
- config.form_id,
+ config.odk_config.project,
+ config.odk_config.form_id,
config.target_registry,
)
client.login()
@@ -85,8 +84,8 @@ def import_records(self):
config.odk_config.base_url,
config.odk_config.username,
config.odk_config.password,
- config.project,
- config.form_id,
+ config.odk_config.project,
+ config.odk_config.form_id,
config.target_registry,
config.json_formatter,
)
@@ -123,8 +122,8 @@ def import_records_by_id(self, _id):
config.base_url,
config.username,
config.password,
- self.project,
- self.form_id,
+ config.project,
+ config.form_id,
self.target_registry,
self.json_formatter,
)
diff --git a/g2p_odk_importer/tests/test_odk_client.py b/g2p_odk_importer/tests/test_odk_client.py
index 8634b2b..61f2bcd 100644
--- a/g2p_odk_importer/tests/test_odk_client.py
+++ b/g2p_odk_importer/tests/test_odk_client.py
@@ -120,28 +120,6 @@ def test_handle_media_import(self, mock_get):
self.client.handle_media_import(member, mapped_json)
self.assertIn("supporting_documents_ids", mapped_json)
- def test_find_existing_partner(self):
- mapped_json = {
- "reg_ids": [(0, 0, {"id_type": "National ID", "value": "12345", "expiry_date": "2024-12-31"})]
- }
- self.env_mock["g2p.id.type"].search.return_value.id = 1
- self.env_mock["res.partner"].search.return_value = MagicMock()
-
- odk_client = ODKClient(
- self.env_mock,
- 1,
- self.base_url,
- self.username,
- self.password,
- self.project_id,
- self.form_id,
- self.target_registry,
- self.json_formatter,
- )
-
- result = odk_client.find_existing_partner(mapped_json)
- self.assertIsNotNone(result)
-
def test_get_dob(self):
record = {"birthdate": "2000-01-01", "age": 4}
odk_client = ODKClient(
diff --git a/g2p_odk_importer/tests/test_odk_import.py b/g2p_odk_importer/tests/test_odk_import.py
index bd68887..3d50f81 100644
--- a/g2p_odk_importer/tests/test_odk_import.py
+++ b/g2p_odk_importer/tests/test_odk_import.py
@@ -23,6 +23,8 @@ def setUpClass(cls):
"base_url": cls.base_url,
"username": cls.username,
"password": cls.password,
+ "project": cls.project_id,
+ "form_id": cls.form_id,
}
)
@@ -35,8 +37,6 @@ def test_test_connection(self, mock_test_connection, mock_login):
odk_import = self.env["odk.import"].create(
{
"odk_config": self.odk_config.id,
- "project": self.project_id,
- "form_id": self.form_id,
"target_registry": self.target_registry,
"json_formatter": self.json_formatter,
}
@@ -58,8 +58,6 @@ def test_import_records(self, mock_import_delta_records, mock_login):
odk_import = self.env["odk.import"].create(
{
"odk_config": self.odk_config.id,
- "project": self.project_id,
- "form_id": self.form_id,
"target_registry": self.target_registry,
"json_formatter": self.json_formatter,
}
@@ -81,8 +79,6 @@ def test_import_records_no_updates(self, mock_import_delta_records, mock_login):
odk_import = self.env["odk.import"].create(
{
"odk_config": self.odk_config.id,
- "project": self.project_id,
- "form_id": self.form_id,
"target_registry": self.target_registry,
"json_formatter": self.json_formatter,
}
diff --git a/g2p_odk_importer/views/odk_config_views.xml b/g2p_odk_importer/views/odk_config_views.xml
index daa952a..a0c2eeb 100644
--- a/g2p_odk_importer/views/odk_config_views.xml
+++ b/g2p_odk_importer/views/odk_config_views.xml
@@ -25,13 +25,17 @@
+
+
+
+
- ODK Configuration
+ Configuration
ir.actions.act_window
odk.config
tree,form
diff --git a/g2p_odk_importer/views/odk_import_views.xml b/g2p_odk_importer/views/odk_import_views.xml
index 3a1557f..2fbfcea 100644
--- a/g2p_odk_importer/views/odk_import_views.xml
+++ b/g2p_odk_importer/views/odk_import_views.xml
@@ -16,7 +16,7 @@
1
-
+