refactor: validate status before running events

(cherry picked from commit 86b5e2e277)
This commit is contained in:
ruthra kumar
2024-02-04 15:37:21 +05:30
committed by Mergify
parent 833df2c76b
commit 341e467056

View File

@@ -6,7 +6,7 @@ import frappe
from frappe import _, qb
from frappe.desk.notifications import clear_notifications
from frappe.model.document import Document
from frappe.utils import cint, create_batch
from frappe.utils import cint, create_batch, get_link_to_form
class TransactionDeletionRecord(Document):
@@ -43,7 +43,7 @@ class TransactionDeletionRecord(Document):
>>>>>>> 0d65d878de (refactor: more options for 'status' and move it to top)
def __init__(self, *args, **kwargs):
super(TransactionDeletionRecord, self).__init__(*args, **kwargs)
self.batch_size = 5
self.batch_size = 5000
def validate(self):
frappe.only_for("System Manager")
@@ -101,6 +101,7 @@ class TransactionDeletionRecord(Document):
self.delete_company_transactions()
def delete_notifications(self):
self.validate_doc_status()
if not self.clear_notifications:
clear_notifications()
self.db_set("clear_notifications", 1)
@@ -111,9 +112,19 @@ class TransactionDeletionRecord(Document):
for doctype in doctypes_to_be_ignored_list:
self.append("doctypes_to_be_ignored", {"doctype_name": doctype})
def validate_doc_status(self):
if self.status != "Running":
frappe.throw(
_("{0} is not running. Cannot trigger events for this Document").format(
get_link_to_form("Transaction Deletion Record", self.name)
)
)
@frappe.whitelist()
def delete_bins(self):
# This methid is the entry point for the chain of events that follow
self.db_set("status", "Running")
if not self.delete_bin_data:
frappe.db.sql(
"""delete from `tabBin` where warehouse in
@@ -125,6 +136,7 @@ class TransactionDeletionRecord(Document):
def delete_lead_addresses(self):
"""Delete addresses to which leads are linked"""
self.validate_doc_status()
if not self.delete_leads_and_addresses:
leads = frappe.get_all("Lead", filters={"company": self.company})
leads = ["'%s'" % row.get("name") for row in leads]
@@ -165,6 +177,7 @@ class TransactionDeletionRecord(Document):
self.chain_call(method="reset_company_values")
def reset_company_values(self):
self.validate_doc_status()
if not self.reset_company_default_values:
company_obj = frappe.get_doc("Company", self.company)
company_obj.total_monthly_sales = 0
@@ -174,6 +187,7 @@ class TransactionDeletionRecord(Document):
self.chain_call(method="delete_notifications")
def initialize_doctypes_to_be_deleted_table(self):
self.validate_doc_status()
if not self.initialize_doctypes_table:
doctypes_to_be_ignored_list = self.get_doctypes_to_be_ignored_list()
docfields = self.get_doctypes_with_company_field(doctypes_to_be_ignored_list)
@@ -190,6 +204,7 @@ class TransactionDeletionRecord(Document):
self.chain_call(method="delete_company_transactions")
def delete_company_transactions(self):
self.validate_doc_status()
if not self.delete_transactions:
doctypes_to_be_ignored_list = self.get_doctypes_to_be_ignored_list()
docfields = self.get_doctypes_with_company_field(doctypes_to_be_ignored_list)
@@ -215,6 +230,7 @@ class TransactionDeletionRecord(Document):
processed = int(docfield.no_of_docs) + len(reference_doc_names)
frappe.db.set_value(docfield.doctype, docfield.name, "no_of_docs", processed)
else:
# reset naming series
naming_series = frappe.db.get_value("DocType", docfield.doctype_name, "autoname")
if naming_series:
if "#" in naming_series:
@@ -227,6 +243,7 @@ class TransactionDeletionRecord(Document):
if pending_doctypes:
self.chain_call(method="delete_company_transactions")
else:
self.db_set("status", "Completed")
self.db_set("delete_transactions", 1)
def get_doctypes_to_be_ignored_list(self):