diff --git a/crm/api/todo.py b/crm/api/todo.py index dc9dcf28..685e756b 100644 --- a/crm/api/todo.py +++ b/crm/api/todo.py @@ -1,90 +1,79 @@ import frappe from frappe import _ + from crm.fcrm.doctype.crm_notification.crm_notification import notify_user def after_insert(doc, method): - if ( - doc.reference_type in ["CRM Lead", "CRM Deal"] - and doc.reference_name - and doc.allocated_to - ): - fieldname = "lead_owner" if doc.reference_type == "CRM Lead" else "deal_owner" - lead_owner = frappe.db.get_value( - doc.reference_type, doc.reference_name, fieldname - ) - if not lead_owner: - frappe.db.set_value( - doc.reference_type, doc.reference_name, fieldname, doc.allocated_to - ) + if doc.reference_type in ["CRM Lead", "CRM Deal"] and doc.reference_name and doc.allocated_to: + fieldname = "lead_owner" if doc.reference_type == "CRM Lead" else "deal_owner" + owner = frappe.db.get_value(doc.reference_type, doc.reference_name, fieldname) + if not owner: + frappe.db.set_value( + doc.reference_type, doc.reference_name, fieldname, doc.allocated_to, update_modified=False + ) - if ( - doc.reference_type in ["CRM Lead", "CRM Deal", "CRM Task"] - and doc.reference_name - and doc.allocated_to - ): - notify_assigned_user(doc) + if doc.reference_type in ["CRM Lead", "CRM Deal", "CRM Task"] and doc.reference_name and doc.allocated_to: + notify_assigned_user(doc) def on_update(doc, method): - if ( - doc.has_value_changed("status") - and doc.status == "Cancelled" - and doc.reference_type in ["CRM Lead", "CRM Deal", "CRM Task"] - and doc.reference_name - and doc.allocated_to - ): - notify_assigned_user(doc, is_cancelled=True) + if ( + doc.has_value_changed("status") + and doc.status == "Cancelled" + and doc.reference_type in ["CRM Lead", "CRM Deal", "CRM Task"] + and doc.reference_name + and doc.allocated_to + ): + notify_assigned_user(doc, is_cancelled=True) def notify_assigned_user(doc, is_cancelled=False): - _doc = frappe.get_doc(doc.reference_type, doc.reference_name) - owner = frappe.get_cached_value("User", frappe.session.user, "full_name") - notification_text = get_notification_text(owner, doc, _doc, is_cancelled) + _doc = frappe.get_doc(doc.reference_type, doc.reference_name) + owner = frappe.get_cached_value("User", frappe.session.user, "full_name") + notification_text = get_notification_text(owner, doc, _doc, is_cancelled) - message = ( - _("Your assignment on {0} {1} has been removed by {2}").format( - doc.reference_type, doc.reference_name, owner - ) - if is_cancelled - else _("{0} assigned a {1} {2} to you").format( - owner, doc.reference_type, doc.reference_name - ) - ) + message = ( + _("Your assignment on {0} {1} has been removed by {2}").format( + doc.reference_type, doc.reference_name, owner + ) + if is_cancelled + else _("{0} assigned a {1} {2} to you").format(owner, doc.reference_type, doc.reference_name) + ) - redirect_to_doctype, redirect_to_name = get_redirect_to_doc(doc) + redirect_to_doctype, redirect_to_name = get_redirect_to_doc(doc) - notify_user( - { - "owner": frappe.session.user, - "assigned_to": doc.allocated_to, - "notification_type": "Assignment", - "message": message, - "notification_text": notification_text, - "reference_doctype": doc.reference_type, - "reference_docname": doc.reference_name, - "redirect_to_doctype": redirect_to_doctype, - "redirect_to_docname": redirect_to_name, - } - ) + notify_user( + { + "owner": frappe.session.user, + "assigned_to": doc.allocated_to, + "notification_type": "Assignment", + "message": message, + "notification_text": notification_text, + "reference_doctype": doc.reference_type, + "reference_docname": doc.reference_name, + "redirect_to_doctype": redirect_to_doctype, + "redirect_to_docname": redirect_to_name, + } + ) def get_notification_text(owner, doc, reference_doc, is_cancelled=False): - name = doc.reference_name - doctype = doc.reference_type + name = doc.reference_name + doctype = doc.reference_type - if doctype.startswith("CRM "): - doctype = doctype[4:].lower() + if doctype.startswith("CRM "): + doctype = doctype[4:].lower() - if doctype in ["lead", "deal"]: - name = ( - reference_doc.lead_name or name - if doctype == "lead" - else reference_doc.organization or reference_doc.lead_name or name - ) + if doctype in ["lead", "deal"]: + name = ( + reference_doc.lead_name or name + if doctype == "lead" + else reference_doc.organization or reference_doc.lead_name or name + ) - if is_cancelled: - return f""" + if is_cancelled: + return f"""
{ _('Your assignment on {0} {1} has been removed by {2}').format( doctype, @@ -94,7 +83,7 @@ def get_notification_text(owner, doc, reference_doc, is_cancelled=False):
""" - return f""" + return f"""
{ owner } { _('assigned a {0} {1} to you').format( @@ -104,9 +93,9 @@ def get_notification_text(owner, doc, reference_doc, is_cancelled=False):
""" - if doctype == "task": - if is_cancelled: - return f""" + if doctype == "task": + if is_cancelled: + return f"""
{ _('Your assignment on task {0} has been removed by {1}').format( f'{ reference_doc.title }', @@ -114,7 +103,7 @@ def get_notification_text(owner, doc, reference_doc, is_cancelled=False): ) }
""" - return f""" + return f"""
{ owner } { _('assigned a new task {0} to you').format( @@ -125,8 +114,8 @@ def get_notification_text(owner, doc, reference_doc, is_cancelled=False): def get_redirect_to_doc(doc): - if doc.reference_type == "CRM Task": - reference_doc = frappe.get_doc(doc.reference_type, doc.reference_name) - return reference_doc.reference_doctype, reference_doc.reference_docname + if doc.reference_type == "CRM Task": + reference_doc = frappe.get_doc(doc.reference_type, doc.reference_name) + return reference_doc.reference_doctype, reference_doc.reference_docname - return doc.reference_type, doc.reference_name + return doc.reference_type, doc.reference_name