fix: handle both list and dict results
This commit is contained in:
parent
11b54c304d
commit
a9bbdc0182
1 changed files with 32 additions and 5 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue