From 5a9bd5bb3599a18e6386b15354c66f13772b1aae Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Tue, 9 Jan 2024 15:02:03 +0530 Subject: [PATCH 1/2] fix: don't update docstatus (#24216) This doesn't make sense. Updating docstatus without resaving document is a bad idea. Co-authored-by: rohitwaghchaure (cherry picked from commit 02031fc6f43dfe247d755229e40e249a88964f9c) # Conflicts: # frappe/workflow/doctype/workflow/workflow.py --- .../doctype/workflow/test_workflow.py | 26 ------------------- frappe/workflow/doctype/workflow/workflow.py | 4 ++- 2 files changed, 3 insertions(+), 27 deletions(-) diff --git a/frappe/workflow/doctype/workflow/test_workflow.py b/frappe/workflow/doctype/workflow/test_workflow.py index 00670a2c4df..36e11072fab 100644 --- a/frappe/workflow/doctype/workflow/test_workflow.py +++ b/frappe/workflow/doctype/workflow/test_workflow.py @@ -150,32 +150,6 @@ def test_if_workflow_actions_were_processed_using_user(self): self.assertEqual(workflow_actions[0].status, "Completed") frappe.set_user("Administrator") - def test_update_docstatus(self): - todo = create_new_todo() - apply_workflow(todo, "Approve") - - self.workflow._update_state_docstatus = True - self.workflow.states[1].doc_status = 0 - self.workflow.save() - todo.reload() - self.assertEqual(todo.docstatus, 0) - self.workflow.states[1].doc_status = 1 - self.workflow.save() - todo.reload() - self.assertEqual(todo.docstatus, 1) - - self.workflow.states[1].doc_status = 0 - self.workflow.save() - - self.workflow._update_state_docstatus = False - self.workflow.states[1].doc_status = 1 - self.workflow.save() - todo.reload() - self.assertEqual(todo.docstatus, 0) - - self.workflow.states[1].doc_status = 0 - self.workflow.save() - def test_if_workflow_set_on_action(self): self.workflow._update_state_docstatus = True self.workflow.states[1].doc_status = 1 diff --git a/frappe/workflow/doctype/workflow/workflow.py b/frappe/workflow/doctype/workflow/workflow.py index 9591d3df69d..51b3489252e 100644 --- a/frappe/workflow/doctype/workflow/workflow.py +++ b/frappe/workflow/doctype/workflow/workflow.py @@ -37,7 +37,6 @@ def validate(self): self.validate_docstatus() def on_update(self): - self.update_doc_status() frappe.clear_cache(doctype=self.document_type) def create_custom_field_for_workflow_state(self): @@ -84,6 +83,7 @@ def update_default_workflow_status(self): docstatus_map[d.doc_status] = d.state +<<<<<<< HEAD def update_doc_status(self): """ Checks if the docstatus of a state was updated. @@ -112,6 +112,8 @@ def update_doc_status(self): update_modified=False, ) +======= +>>>>>>> 02031fc6f4 (fix: don't update docstatus (#24216)) def validate_docstatus(self): def get_state(state): for s in self.states: From 831bb1ab4ea57887aca28ee1e2a153878661fcf5 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Wed, 10 Jan 2024 10:58:23 +0530 Subject: [PATCH 2/2] chore: conflicts --- frappe/workflow/doctype/workflow/workflow.py | 31 -------------------- 1 file changed, 31 deletions(-) diff --git a/frappe/workflow/doctype/workflow/workflow.py b/frappe/workflow/doctype/workflow/workflow.py index 51b3489252e..5ca7e0a9dcc 100644 --- a/frappe/workflow/doctype/workflow/workflow.py +++ b/frappe/workflow/doctype/workflow/workflow.py @@ -83,37 +83,6 @@ def update_default_workflow_status(self): docstatus_map[d.doc_status] = d.state -<<<<<<< HEAD - def update_doc_status(self): - """ - Checks if the docstatus of a state was updated. - If yes then the docstatus of the document with same state will be updated - """ - - if not self.get("_update_state_docstatus"): - return - - doc_before_save = self.get_doc_before_save() - before_save_states, new_states = {}, {} - if doc_before_save: - for d in doc_before_save.states: - before_save_states[d.state] = d - for d in self.states: - new_states[d.state] = d - - for key in new_states: - if key in before_save_states: - if not new_states[key].doc_status == before_save_states[key].doc_status: - frappe.db.set_value( - self.document_type, - {self.workflow_state_field: before_save_states[key].state}, - "docstatus", - new_states[key].doc_status, - update_modified=False, - ) - -======= ->>>>>>> 02031fc6f4 (fix: don't update docstatus (#24216)) def validate_docstatus(self): def get_state(state): for s in self.states: