Merge pull request #11301 from scmmishra/fix-custom-columns

fix: handle both list and dict results
This commit is contained in:
mergify[bot] 2020-08-24 14:25:12 +00:00 committed by GitHub
commit 0a7d93a1de
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -216,20 +216,33 @@ def add_data_to_custom_columns(columns, result):
return data
def reorder_data_for_custom_columns(custom_columns, columns, result, report_type):
custom_column_labels = [col["label"] for col in custom_columns]
if not result:
return []
if report_type == 'Query Report':
# Assume list result for query reports
# Query report columns exclusively use Label
custom_column_labels = [col["label"] for col in custom_columns]
original_column_labels = [col.split(":")[0] for col in columns]
else:
original_column_labels = [col["label"] for col in columns]
return get_columns_from_list(custom_column_labels, original_column_labels, result)
custom_column_names = [col["fieldname"] for col in custom_columns]
if isinstance(result[0], list) or isinstance(result[0], tuple):
# If the result is a list of lists
original_column_names = [col["fieldname"] for col in columns]
return get_columns_from_list(custom_column_names, original_column_names, result)
else:
# If the result is a list of dicts
return get_columns_from_dict(custom_column_names, result)
def get_columns_from_list(columns, target_columns, result):
reordered_result = []
for res in result:
r = []
for col_name in custom_column_labels:
for col_name in columns:
try:
idx = original_column_labels.index(col_name)
idx = target_columns.index(col_name)
r.append(res[idx])
except ValueError:
pass
@ -238,6 +251,21 @@ def reorder_data_for_custom_columns(custom_columns, columns, result, report_type
return reordered_result
def get_columns_from_dict(columns, result):
reordered_result = []
for res in result:
r = {}
for col_name in columns:
try:
r[col_name] = res[col_name]
except KeyError:
pass
reordered_result.append(r)
return reordered_result
def get_prepared_report_result(report, filters, dn="", user=None):
latest_report_data = {}
doc = None