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),