diff --git a/crm/api/doc.py b/crm/api/doc.py index 9cc5c653..16e6b2ef 100644 --- a/crm/api/doc.py +++ b/crm/api/doc.py @@ -3,6 +3,7 @@ import json import frappe from frappe import _ from frappe.custom.doctype.property_setter.property_setter import make_property_setter +from frappe.desk.form.assign_to import set_status from frappe.model import no_value_fields from frappe.model.document import get_controller from frappe.utils import make_filter_tuple @@ -658,6 +659,24 @@ def get_fields_meta(doctype, restricted_fieldtypes=None, as_array=False, only_re return fields_meta +@frappe.whitelist() +def remove_assignments(doctype, name, assignees, ignore_permissions=False): + assignees = json.loads(assignees) + + if not assignees: + return + + for assign_to in assignees: + set_status( + doctype, + name, + todo=None, + assign_to=assign_to, + status="Cancelled", + ignore_permissions=ignore_permissions, + ) + +@frappe.whitelist() def get_assigned_users(doctype, name, default_assigned_to=None): assigned_users = frappe.get_all( "ToDo", diff --git a/frontend/src/components/Modals/AssignmentModal.vue b/frontend/src/components/Modals/AssignmentModal.vue index e0b99254..05cea454 100644 --- a/frontend/src/components/Modals/AssignmentModal.vue +++ b/frontend/src/components/Modals/AssignmentModal.vue @@ -145,13 +145,11 @@ function updateAssignees() { .map((assignee) => assignee.name) if (removedAssignees.length) { - for (let a of removedAssignees) { - call('frappe.desk.form.assign_to.remove', { - doctype: props.doctype, - name: props.doc.name, - assign_to: a, - }) - } + call('crm.api.doc.remove_assignments', { + doctype: props.doctype, + name: props.doc.name, + assignees: JSON.stringify(removedAssignees), + }) } if (addedAssignees.length) {