def check_if_doc_is_linked(doc, method="Delete"):
	"""
		Raises excption if the given doc(dt, dn) is linked in another record.
	"""
	from frappe.model.rename_doc import get_link_fields
	link_fields = get_link_fields(doc.doctype)
	link_fields = [[lf['parent'], lf['fieldname'], lf['issingle']] for lf in link_fields]

	for link_dt, link_field, issingle in link_fields:
		if not issingle:
			item = frappe.db.get_value(link_dt, {link_field:doc.name},
				["name", "parent", "parenttype", "docstatus"], as_dict=True)
			if item and ((item.parent or item.name) != doc.name) \
					and ((method=="Delete" and item.docstatus<2) or (method=="Cancel" and item.docstatus==1)):
				# raise exception only if
				# linked to an non-cancelled doc when deleting
				# or linked to a submitted doc when cancelling
				frappe.throw(_("Cannot delete or cancel because {0} {1} is linked with {2} {3}")
					.format(doc.doctype, doc.name, item.parenttype if item.parent else link_dt,
					item.parent or item.name), frappe.LinkExistsError)
dataset/ETHPy150Open frappe/frappe/frappe/model/delete_doc.py/check_if_doc_is_linked/original