brotherton-erpnext/patches/1311/p06_fix_report_columns.py
2013-11-27 11:02:50 +05:30

34 lines
1.2 KiB
Python

# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import webnotes
import json
def execute():
doctypes_child_tables_map = {}
# Get all saved report columns
columns = webnotes.conn.sql("""select defvalue, defkey from `tabDefaultValue` where
defkey like '_list_settings:%'""")
# Make map of doctype and child tables
for value, key in columns:
doctype = key.split(':')[-1]
child_tables = webnotes.conn.sql_list("""select options from `tabDocField`
where parent=%s and fieldtype='Table'""", doctype)
doctypes_child_tables_map.setdefault(doctype, child_tables + [doctype])
# If defvalue contains child doctypes then only append the column
for value, key in columns:
new_columns = []
column_doctype = key.split(':')[-1]
for field, field_doctype in json.loads(value):
if field_doctype in doctypes_child_tables_map.get(column_doctype):
new_columns.append([field, field_doctype])
if new_columns:
webnotes.conn.sql("""update `tabDefaultValue` set defvalue=%s
where defkey=%s""" % ('%s', '%s'), (json.dumps(new_columns), key))
else:
webnotes.conn.sql("""delete from `tabDefaultValue` where defkey=%s""", key)