From 817d0744f866a9cfdefcc9d856954c98e964ea01 Mon Sep 17 00:00:00 2001
From: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com>
Date: Tue, 8 Jan 2019 10:43:27 +0530
Subject: [PATCH] feat: Function for linking reports with filters (#6718)
---
frappe/utils/data.py | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/frappe/utils/data.py b/frappe/utils/data.py
index 6514489f74..07cfd99166 100644
--- a/frappe/utils/data.py
+++ b/frappe/utils/data.py
@@ -745,6 +745,20 @@ def get_link_to_form(doctype, name, label=None):
return """{1}""".format(get_url_to_form(doctype, name), label)
+def get_link_to_report(name, label=None, report_type=None, doctype=None, filters=None):
+ if not label: label = name
+
+ if filters:
+ conditions = []
+ for k,v in iteritems(filters):
+ conditions.append(str(k)+"="+str(v))
+
+ filters = "&".join(conditions)
+
+ return """{1}""".format(get_url_to_report_with_filters(name, filters, report_type, doctype), label)
+ else:
+ return """{1}""".format(get_url_to_report(name, report_type, doctype), label)
+
def get_url_to_form(doctype, name):
return get_url(uri = "desk#Form/{0}/{1}".format(quoted(doctype), quoted(name)))
@@ -757,6 +771,12 @@ def get_url_to_report(name, report_type = None, doctype = None):
else:
return get_url(uri = "desk#query-report/{0}".format(quoted(name)))
+def get_url_to_report_with_filters(name, filters, report_type = None, doctype = None):
+ if report_type == "Report Builder":
+ return get_url(uri = "desk#Report/{0}/{1}?{2}".format(quoted(doctype), quoted(name), filters))
+ else:
+ return get_url(uri = "desk#query-report/{0}?{1}".format(quoted(name), filters))
+
operator_map = {
# startswith
"^": lambda a, b: (a or "").startswith(b),