From f3be17e57096eab4798e97fd337e3595b467a7f6 Mon Sep 17 00:00:00 2001 From: Karm Soni Date: Fri, 3 Oct 2025 18:25:14 +0530 Subject: [PATCH 1/4] refactor: create integration request in new transaction; code smell; --- .../transaction_parser/ai_integration/parser.py | 4 ++-- .../transaction_parser/utils/__init__.py | 16 ++++++++++++++++ .../utils/integration_request.py | 8 +++----- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/transaction_parser/transaction_parser/ai_integration/parser.py b/transaction_parser/transaction_parser/ai_integration/parser.py index f74eec2..946d0cf 100644 --- a/transaction_parser/transaction_parser/ai_integration/parser.py +++ b/transaction_parser/transaction_parser/ai_integration/parser.py @@ -12,7 +12,7 @@ ) from transaction_parser.transaction_parser.utils import is_enabled, to_dict from transaction_parser.transaction_parser.utils.integration_request import ( - enqueue_integration_request, + create_integration_request, ) @@ -79,7 +79,7 @@ def send_message(self, messages: tuple, file_doc_name: str | None = None) -> dic raise e finally: - enqueue_integration_request(**log) + create_integration_request(**log) def _create_log_entry(self, file_doc_name: str | None) -> frappe._dict: """Create a log entry for the API call.""" diff --git a/transaction_parser/transaction_parser/utils/__init__.py b/transaction_parser/transaction_parser/utils/__init__.py index d3b93ff..6d8ad22 100644 --- a/transaction_parser/transaction_parser/utils/__init__.py +++ b/transaction_parser/transaction_parser/utils/__init__.py @@ -1,4 +1,5 @@ import json +from functools import wraps import frappe from frappe import _ @@ -33,3 +34,18 @@ def to_dict(value, throw=True): frappe.throw(_("Invalid JSON")) return frappe._dict() + + +def execute_in_new_transaction(fn): + @wraps(fn) + def wrapper(*args, **kwargs): + try: + _db = frappe.local.db + frappe.connect(set_admin_as_user=False) + return fn(*args, **kwargs) + finally: + frappe.db.commit() + frappe.db.close() + frappe.local.db = _db + + return wrapper diff --git a/transaction_parser/transaction_parser/utils/integration_request.py b/transaction_parser/transaction_parser/utils/integration_request.py index bbf2063..11516b7 100644 --- a/transaction_parser/transaction_parser/utils/integration_request.py +++ b/transaction_parser/transaction_parser/utils/integration_request.py @@ -3,15 +3,13 @@ import frappe from frappe import _ -from transaction_parser.transaction_parser.utils.__init__ import pretty_json +from transaction_parser.transaction_parser.utils import pretty_json +from transaction_parser.utils import execute_in_new_transaction SERVICE_NAME = "Transaction Parser API" -def enqueue_integration_request(**kwargs): - frappe.enqueue(create_integration_request, **kwargs) - - +@execute_in_new_transaction def create_integration_request( url=None, request_id=None, From f6ae156d47f7695d0af599384fc666846b9f02f4 Mon Sep 17 00:00:00 2001 From: Karm Soni Date: Fri, 3 Oct 2025 18:28:44 +0530 Subject: [PATCH 2/4] fix: add nosemgrep comment to database commit line --- transaction_parser/transaction_parser/utils/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/transaction_parser/transaction_parser/utils/__init__.py b/transaction_parser/transaction_parser/utils/__init__.py index 6d8ad22..e668abc 100644 --- a/transaction_parser/transaction_parser/utils/__init__.py +++ b/transaction_parser/transaction_parser/utils/__init__.py @@ -44,7 +44,7 @@ def wrapper(*args, **kwargs): frappe.connect(set_admin_as_user=False) return fn(*args, **kwargs) finally: - frappe.db.commit() + frappe.db.commit() # nosemgrep frappe.db.close() frappe.local.db = _db From 4854a770edd5cfccf77647e134c310d03db7d24a Mon Sep 17 00:00:00 2001 From: Karm Soni Date: Mon, 6 Oct 2025 11:53:07 +0530 Subject: [PATCH 3/4] fix: correct import --- .../transaction_parser/utils/integration_request.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/transaction_parser/transaction_parser/utils/integration_request.py b/transaction_parser/transaction_parser/utils/integration_request.py index 11516b7..fd0edeb 100644 --- a/transaction_parser/transaction_parser/utils/integration_request.py +++ b/transaction_parser/transaction_parser/utils/integration_request.py @@ -3,8 +3,10 @@ import frappe from frappe import _ -from transaction_parser.transaction_parser.utils import pretty_json -from transaction_parser.utils import execute_in_new_transaction +from transaction_parser.transaction_parser.utils import ( + execute_in_new_transaction, + pretty_json, +) SERVICE_NAME = "Transaction Parser API" From 1995b670ef7a8c45b8a86c3f0d6fb13416a6bdbe Mon Sep 17 00:00:00 2001 From: Karm Soni Date: Fri, 10 Oct 2025 18:07:00 +0530 Subject: [PATCH 4/4] refactor: improve transaction handling in execute_in_new_transaction --- transaction_parser/transaction_parser/utils/__init__.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/transaction_parser/transaction_parser/utils/__init__.py b/transaction_parser/transaction_parser/utils/__init__.py index e668abc..ba2331d 100644 --- a/transaction_parser/transaction_parser/utils/__init__.py +++ b/transaction_parser/transaction_parser/utils/__init__.py @@ -39,12 +39,14 @@ def to_dict(value, throw=True): def execute_in_new_transaction(fn): @wraps(fn) def wrapper(*args, **kwargs): + _db = frappe.local.db try: - _db = frappe.local.db frappe.connect(set_admin_as_user=False) - return fn(*args, **kwargs) - finally: + result = fn(*args, **kwargs) frappe.db.commit() # nosemgrep + return result + + finally: frappe.db.close() frappe.local.db = _db