[Fix] Json data for Report Builder based reports (#6624)

* replace doctype name if already present

* patch to update json data for report builder based reports

* minor fix for auto email
This commit is contained in:
Zarrar 2018-12-18 08:56:10 +05:30 committed by Rushabh Mehta
parent b247cae12e
commit 863c54b0fa
3 changed files with 26 additions and 2 deletions

View file

@ -231,4 +231,5 @@ frappe.patches.v10_0.enhance_security
frappe.patches.v11_0.multiple_references_in_events
frappe.patches.v11_0.set_allow_self_approval_in_workflow
frappe.patches.v11_0.migrate_report_settings_for_new_listview
frappe.patches.v11_0.delete_all_prepared_reports
frappe.patches.v11_0.delete_all_prepared_reports
frappe.patches.v11_0.fix_order_by_in_reports_json

View file

@ -0,0 +1,22 @@
import frappe, json
def execute():
reports_data = frappe.get_all('Report',
filters={'json': ['not like', '%%%"order_by": "`tab%%%'],
'report_type': 'Report Builder', 'is_standard': 'No'}, fields=['name'])
for d in reports_data:
doc = frappe.get_doc('Report', d.get('name'))
json_data = json.loads(doc.get('json'))
parts = []
if ('order_by' in json_data) and ('.' in json_data.get('order_by')):
parts = json_data.get('order_by').split('.')
sort_by = parts[1].split(' ')
json_data['order_by'] = '`tab{0}`.`{1}`'.format(doc.ref_doctype, sort_by[0])
json_data['order_by'] += ' {0}'.format(sort_by[1]) if len(sort_by) > 1 else ''
doc.json = json.dumps(json_data)
doc.save()

View file

@ -824,7 +824,8 @@ def get_filter(doctype, f):
if len(f) == 3:
f = (doctype, f[0], f[1], f[2])
elif len(f) > 4:
f = f[0:4]
elif len(f) != 4:
frappe.throw(frappe._("Filter must have 4 values (doctype, fieldname, operator, value): {0}").format(str(f)))