refactor: Simplify call log code

This commit is contained in:
Suraj Shetty 2022-05-08 16:05:04 +05:30
parent 53e4fee4db
commit e0bc437ddb

View File

@ -24,12 +24,10 @@ class CallLog(Document):
lead_number = self.get("from") if self.is_incoming_call() else self.get("to") lead_number = self.get("from") if self.is_incoming_call() else self.get("to")
lead_number = strip_number(lead_number) lead_number = strip_number(lead_number)
contact = get_contact_with_phone_number(strip_number(lead_number)) if contact := get_contact_with_phone_number(strip_number(lead_number)):
if contact:
self.add_link(link_type="Contact", link_name=contact) self.add_link(link_type="Contact", link_name=contact)
lead = get_lead_with_phone_number(lead_number) if lead := get_lead_with_phone_number(lead_number):
if lead:
self.add_link(link_type="Lead", link_name=lead) self.add_link(link_type="Lead", link_name=lead)
# Add Employee Name # Add Employee Name
@ -70,28 +68,30 @@ class CallLog(Document):
self.append("links", {"link_doctype": link_type, "link_name": link_name}) self.append("links", {"link_doctype": link_type, "link_name": link_name})
def trigger_call_popup(self): def trigger_call_popup(self):
if self.is_incoming_call(): if not self.is_incoming_call():
scheduled_employees = get_scheduled_employees_for_popup(self.medium) return
employees = get_employees_with_number(self.to)
employee_emails = [employee.get("user_id") for employee in employees]
# check if employees with matched number are scheduled to receive popup scheduled_employees = get_scheduled_employees_for_popup(self.medium)
emails = set(scheduled_employees).intersection(employee_emails) employees = get_employees_with_number(self.to)
employee_emails = [employee.get("user_id") for employee in employees]
if frappe.conf.developer_mode: # check if employees with matched number are scheduled to receive popup
self.add_comment( emails = set(scheduled_employees).intersection(employee_emails)
text=f"""
if frappe.conf.developer_mode:
self.add_comment(
text=f"""
Scheduled Employees: {scheduled_employees} Scheduled Employees: {scheduled_employees}
Matching Employee: {employee_emails} Matching Employee: {employee_emails}
Show Popup To: {emails} Show Popup To: {emails}
""" """
) )
if employee_emails and not emails: if employee_emails and not emails:
self.add_comment(text=_("No employee was scheduled for call popup")) self.add_comment(text=_("No employee was scheduled for call popup"))
for email in emails: for email in emails:
frappe.publish_realtime("show_call_popup", self, user=email) frappe.publish_realtime("show_call_popup", self, user=email)
def update_received_by(self): def update_received_by(self):
if employees := get_employees_with_number(self.get("to")): if employees := get_employees_with_number(self.get("to")):
@ -154,8 +154,8 @@ def link_existing_conversations(doc, state):
ELSE 0 ELSE 0
END END
)=0 )=0
""", """,
dict(phone_number="%{}".format(number), docname=doc.name, doctype=doc.doctype), dict(phone_number=f"%{number}", docname=doc.name, doctype=doc.doctype),
) )
for log in logs: for log in logs:
@ -175,7 +175,7 @@ def get_linked_call_logs(doctype, docname):
filters={"parenttype": "Call Log", "link_doctype": doctype, "link_name": docname}, filters={"parenttype": "Call Log", "link_doctype": doctype, "link_name": docname},
) )
logs = set([log.parent for log in logs]) logs = {log.parent for log in logs}
logs = frappe.get_all("Call Log", fields=["*"], filters={"name": ["in", logs]}) logs = frappe.get_all("Call Log", fields=["*"], filters={"name": ["in", logs]})