fix: handle both list and dict results

This commit is contained in:
Shivam Mishra 2020-08-18 13:42:18 +05:30
parent 11b54c304d
commit a9bbdc0182

View file

@ -216,20 +216,32 @@ 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 exclisvuely 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)
if type(result[0]) == "list":
# 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 +250,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