Skip to content
This repository has been archived by the owner on Sep 12, 2024. It is now read-only.

SR-121: Separation feedback changes #33

Merged
merged 5 commits into from
Aug 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 2 additions & 19 deletions g2p_odk_importer/models/odk_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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":
Expand All @@ -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:
Expand Down Expand Up @@ -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)
Expand Down
2 changes: 2 additions & 0 deletions g2p_odk_importer/models/odk_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
15 changes: 7 additions & 8 deletions g2p_odk_importer/models/odk_import.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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()
Expand All @@ -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,
)
Expand Down Expand Up @@ -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,
)
Expand Down
22 changes: 0 additions & 22 deletions g2p_odk_importer/tests/test_odk_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
8 changes: 2 additions & 6 deletions g2p_odk_importer/tests/test_odk_import.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}
)

Expand All @@ -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,
}
Expand All @@ -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,
}
Expand All @@ -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,
}
Expand Down
6 changes: 5 additions & 1 deletion g2p_odk_importer/views/odk_config_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,17 @@
<field name="username" />
<field name="password" password="true" />
</group>
<group string="Project details">
<field name="project" />
<field name="form_id" />
</group>
</sheet>
</form>
</field>
</record>

<record id="action_odk_config" model="ir.actions.act_window">
<field name="name">ODK Configuration</field>
<field name="name">Configuration</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">odk.config</field>
<field name="view_mode">tree,form</field>
Expand Down
6 changes: 1 addition & 5 deletions g2p_odk_importer/views/odk_import_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<field name="priority">1</field>
<field name="arch" type="xml">
<tree>
<field name="project" />
<field name="odk_config_name" />
<field name="job_status" />
<button
type="action"
Expand Down Expand Up @@ -100,10 +100,6 @@
<group string="ODK Configuration">
<field name="odk_config" />
</group>
<group string="Project details">
<field name="project" />
<field name="form_id" />
</group>
<group string="Target settings">
<field name="target_registry" />
<field name="json_formatter" />
Expand Down
2 changes: 1 addition & 1 deletion g2p_odk_importer/views/odk_menu.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

<menuitem
id="odk_config_menu"
name="ODK Configuration"
name="Configuration"
parent="odk_menu_root"
sequence="1"
action="g2p_odk_importer.action_odk_config"
Expand Down
Loading