import jingrow from jingrow import _ from crm.fcrm.pagetype.crm_notification.crm_notification import notify_user def after_insert(pg, method): if pg.reference_type in ["CRM Lead", "CRM Deal"] and pg.reference_name and pg.allocated_to: fieldname = "lead_owner" if pg.reference_type == "CRM Lead" else "deal_owner" owner = jingrow.db.get_value(pg.reference_type, pg.reference_name, fieldname) if not owner: jingrow.db.set_value( pg.reference_type, pg.reference_name, fieldname, pg.allocated_to, update_modified=False ) if pg.reference_type in ["CRM Lead", "CRM Deal", "CRM Task"] and pg.reference_name and pg.allocated_to: notify_assigned_user(pg) def on_update(pg, method): if ( pg.has_value_changed("status") and pg.status == "Cancelled" and pg.reference_type in ["CRM Lead", "CRM Deal", "CRM Task"] and pg.reference_name and pg.allocated_to ): notify_assigned_user(pg, is_cancelled=True) def notify_assigned_user(pg, is_cancelled=False): _pg = jingrow.get_pg(pg.reference_type, pg.reference_name) owner = jingrow.get_cached_value("User", jingrow.session.user, "full_name") notification_text = get_notification_text(owner, pg, _pg, is_cancelled) message = ( _("Your assignment on {0} {1} has been removed by {2}").format( pg.reference_type, pg.reference_name, owner ) if is_cancelled else _("{0} assigned a {1} {2} to you").format(owner, pg.reference_type, pg.reference_name) ) redirect_to_pagetype, redirect_to_name = get_redirect_to_pg(pg) notify_user( { "owner": jingrow.session.user, "assigned_to": pg.allocated_to, "notification_type": "Assignment", "message": message, "notification_text": notification_text, "reference_pagetype": pg.reference_type, "reference_docname": pg.reference_name, "redirect_to_pagetype": redirect_to_pagetype, "redirect_to_docname": redirect_to_name, } ) def get_notification_text(owner, pg, reference_pg, is_cancelled=False): name = pg.reference_name pagetype = pg.reference_type if pagetype.startswith("CRM "): pagetype = pagetype[4:].lower() if pagetype in ["lead", "deal"]: name = ( reference_pg.lead_name or name if pagetype == "lead" else reference_pg.organization or reference_pg.lead_name or name ) if is_cancelled: return f"""