From ed78a2374855e0d9b7c97415338291e167369212 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Wed, 4 May 2022 14:22:14 +0530 Subject: [PATCH 1/2] fix: handle dict data in deferred_insert vanilla dict doesn't have attrs, setattr fails --- frappe/deferred_insert.py | 2 +- frappe/tests/test_deferred_insert.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 frappe/tests/test_deferred_insert.py diff --git a/frappe/deferred_insert.py b/frappe/deferred_insert.py index 28c77002f8..08c8c79eaa 100644 --- a/frappe/deferred_insert.py +++ b/frappe/deferred_insert.py @@ -46,8 +46,8 @@ def save_to_db(): def insert_record(record: Union[Dict, "Document"], doctype: str): - setattr(record, "doctype", doctype) try: + record.update({"doctype": doctype}) frappe.get_doc(record).insert() except Exception as e: frappe.logger().error(f"Error while inserting deferred {doctype} record: {e}") diff --git a/frappe/tests/test_deferred_insert.py b/frappe/tests/test_deferred_insert.py new file mode 100644 index 0000000000..4f27bef4f0 --- /dev/null +++ b/frappe/tests/test_deferred_insert.py @@ -0,0 +1,12 @@ +import frappe +from frappe.deferred_insert import deferred_insert, save_to_db +from frappe.tests.utils import FrappeTestCase + + +class TestDeferredInsert(FrappeTestCase): + def test_deferred_insert(self): + route_history = {"route": frappe.generate_hash(), "user": "Administrator"} + deferred_insert("Route History", [route_history]) + + save_to_db() + self.assertTrue(frappe.db.exists("Route History", route_history)) From 05f9201e07d5660acce117e155b134b5084cd5d5 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Wed, 4 May 2022 14:57:04 +0530 Subject: [PATCH 2/2] fix: dont manually commit after flushing deferred_insert this runs from scheduled job which commits after finishing. --- frappe/deferred_insert.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/frappe/deferred_insert.py b/frappe/deferred_insert.py index 08c8c79eaa..3b47d46cdf 100644 --- a/frappe/deferred_insert.py +++ b/frappe/deferred_insert.py @@ -42,8 +42,6 @@ def save_to_db(): record_count += 1 insert_record(record, doctype) - frappe.db.commit() - def insert_record(record: Union[Dict, "Document"], doctype: str): try: