diff --git a/frappe/core/doctype/submission_queue/submission_queue.py b/frappe/core/doctype/submission_queue/submission_queue.py index 07e3a64055..be0c20fc32 100644 --- a/frappe/core/doctype/submission_queue/submission_queue.py +++ b/frappe/core/doctype/submission_queue/submission_queue.py @@ -1,7 +1,6 @@ # Copyright (c) 2022, Frappe Technologies and contributors # For license information, please see license.txt -from typing import Callable from urllib.parse import quote from rq import get_current_job @@ -36,11 +35,10 @@ class SubmissionQueue(Document): table = frappe.qb.DocType("Submission Queue") frappe.db.delete(table, filters=(table.modified < (Now() - Interval(days=days)))) - def insert(self, to_be_queued_doc: Document, action: str, **job_kwargs): + def insert(self, to_be_queued_doc: Document, action: str): self.status = "Queued" self.to_be_queued_doc = to_be_queued_doc self.action_for_queuing = action - self.kwargs = job_kwargs super().insert(ignore_permissions=True) def lock(self): @@ -59,15 +57,12 @@ class SubmissionQueue(Document): frappe.db.commit() def after_insert(self): - self.kwargs.pop("enqueue_after_commit", None) - self.queue_action( "background_submission", to_be_queued_doc=self.queued_doc, action_for_queuing=self.action_for_queuing, - timeout=self.kwargs.pop("timeout", 600), + timeout=600, enqueue_after_commit=True, - **self.kwargs, ) def background_submission(self, to_be_queued_doc: Document, action_for_queuing: str): @@ -104,7 +99,7 @@ class SubmissionQueue(Document): else: doctype = self.ref_doctype docname = self.ref_docname - message = _("Action {0} completed on {1} {2}. View it {3}") + message = _("Action {0} completed successfully on {1} {2}. View it {3}") message_replacements = ( frappe.bold(action), @@ -150,11 +145,11 @@ class SubmissionQueue(Document): frappe.msgprint(_("Document Unlocked")) -def queue_submission(doc: Document, action: str, alert: bool = True, **job_kwargs): +def queue_submission(doc: Document, action: str, alert: bool = True): queue = frappe.new_doc("Submission Queue") queue.ref_doctype = doc.doctype queue.ref_docname = doc.name - queue.insert(doc, action, **job_kwargs) + queue.insert(doc, action) if alert: frappe.msgprint( diff --git a/frappe/model/workflow.py b/frappe/model/workflow.py index a2155e43f2..e7835fba8d 100644 --- a/frappe/model/workflow.py +++ b/frappe/model/workflow.py @@ -136,15 +136,7 @@ def apply_workflow(doc, action): doc.save() elif doc.docstatus.is_draft() and new_docstatus == DocStatus.submitted(): if doc.meta.queue_in_background and not is_scheduler_inactive(): - queue_submission( - doc, - action="submit", - on_success=lambda job, connection, result, *args, **kwargs: ( - doc.add_comment("Workflow", _(next_state.state)), - frappe.db.commit(), - ), - ) - return + queue_submission(doc, action="submit") else: doc.submit() elif doc.docstatus.is_submitted() and new_docstatus == DocStatus.submitted(): @@ -265,11 +257,8 @@ def bulk_workflow_approval(docnames, doctype, action): message_dict = {} try: show_progress(docnames, _("Applying: {0}").format(action), idx, docname) - d = apply_workflow(frappe.get_doc(doctype, docname), action) + apply_workflow(frappe.get_doc(doctype, docname), action) frappe.db.commit() - if not d: - # for background submission - continue except Exception as e: if not frappe.message_log: # Exception is raised manually and not from msgprint or throw diff --git a/frappe/workflow/doctype/workflow_action/workflow_action.py b/frappe/workflow/doctype/workflow_action/workflow_action.py index cc3a6c25dd..545ad6ec77 100644 --- a/frappe/workflow/doctype/workflow_action/workflow_action.py +++ b/frappe/workflow/doctype/workflow_action/workflow_action.py @@ -140,36 +140,20 @@ def confirm_action(doctype, docname, user, action): doc = frappe.get_doc(doctype, docname) newdoc = apply_workflow(doc, action) frappe.db.commit() - - return_response_page(doc, not newdoc) + return_success_page(newdoc) # reset session user if logged_in_user == "Guest": frappe.set_user(logged_in_user) -def return_response_page(doc, is_background=False): - if is_background: - title = _("Pending") - message = ( - _("{0}: {1} is added in queue to set to next state").format( - doc.get("doctype"), frappe.bold(doc.get("name")) - ), - ) - color = "orange" - else: - title = _("Success") - message = ( - _("{0}: {1} is set to state {2}").format( - doc.get("doctype"), frappe.bold(doc.get("name")), frappe.bold(get_doc_workflow_state(doc)) - ), - ) - color = "green" - +def return_success_page(doc): frappe.respond_as_web_page( - title, - message, - indicator_color=color, + _("Success"), + _("{0}: {1} is set to state {2}").format( + doc.get("doctype"), frappe.bold(doc.get("name")), frappe.bold(get_doc_workflow_state(doc)) + ), + indicator_color="green", )