metadat reports work w/ burnettk

This commit is contained in:
jasquat 2022-11-29 16:09:55 -05:00
parent 17831eafa7
commit 33b9e5b943
2 changed files with 9 additions and 35 deletions

View File

@ -814,9 +814,9 @@ def process_instance_list(
# process_model_identifier = un_modify_modified_process_model_id(modified_process_model_identifier) # process_model_identifier = un_modify_modified_process_model_id(modified_process_model_identifier)
process_instance_query = ProcessInstanceModel.query process_instance_query = ProcessInstanceModel.query
# Always join that hot user table for good performance at serialization time. # Always join that hot user table for good performance at serialization time.
process_instance_query = process_instance_query.options( # process_instance_query = process_instance_query.options(
joinedload(ProcessInstanceModel.process_initiator) # joinedload(ProcessInstanceModel.process_initiator, ProcessInstanceModel.process_initiator_id == UserModel.id)
) # )
if report_filter.process_model_identifier is not None: if report_filter.process_model_identifier is not None:
process_model = get_process_model( process_model = get_process_model(
@ -929,25 +929,15 @@ def process_instance_list(
UserGroupAssignmentModel.user_id == g.user.id UserGroupAssignmentModel.user_id == g.user.id
) )
# userSkillF = aliased(UserSkill)
# userSkillI = aliased(UserSkill)
# import pdb; pdb.set_trace()
stock_columns = ProcessInstanceReportService.get_column_names_for_model(ProcessInstanceModel) stock_columns = ProcessInstanceReportService.get_column_names_for_model(ProcessInstanceModel)
# print(f"stock_columns: {stock_columns}")
# import pdb; pdb.set_trace()
for column in process_instance_report.report_metadata['columns']: for column in process_instance_report.report_metadata['columns']:
if column['accessor'] in stock_columns: if column['accessor'] in stock_columns:
continue continue
# for column in [{'accessor': 'key1'}]:
# print(f"column: {column['accessor']}")
# process_instance_query = process_instance_query.outerjoin(ProcessInstanceMetadataModel, ProcessInstanceModel.id == ProcessInstanceMetadataModel.process_instance_id, ProcessInstanceMetadataModel.key == column['accessor'])
instance_metadata_alias = aliased(ProcessInstanceMetadataModel) instance_metadata_alias = aliased(ProcessInstanceMetadataModel)
process_instance_query = ( process_instance_query = (
process_instance_query.options(joinedload(instance_metadata_alias, ProcessInstanceModel.id == instance_metadata_alias.process_instance_id, innerjoin=False)).filter(instance_metadata_alias.key == column['accessor']) process_instance_query.options(joinedload(instance_metadata_alias, ProcessInstanceModel.id == instance_metadata_alias.process_instance_id, innerjoin=False)).filter(instance_metadata_alias.key == column['accessor'])
.add_column(func.max(instance_metadata_alias.value).label(column['accessor'])) .add_columns(func.max(instance_metadata_alias.value).label(column['accessor']))
) )
# import pdb; pdb.set_trace()
process_instances = ( process_instances = (
process_instance_query.group_by(ProcessInstanceModel.id) process_instance_query.group_by(ProcessInstanceModel.id)
@ -956,26 +946,9 @@ def process_instance_list(
) )
.paginate(page=page, per_page=per_page, error_out=False) .paginate(page=page, per_page=per_page, error_out=False)
) )
import pdb; pdb.set_trace()
# def awesome_serialize(process_instance)
# dict_thing = process_instance.serialize
#
# # add columns since we have access to columns here
# dict_thing['awesome'] = 'awesome'
#
# return dict_thing
# results = list(
# map(
# ProcessInstanceService.serialize_flat_with_task_data,
# process_instances.items,
# )
# )
results = ProcessInstanceReportService.add_metadata_columns_to_process_instance(process_instances.items, process_instance_report.report_metadata['columns']) results = ProcessInstanceReportService.add_metadata_columns_to_process_instance(process_instances.items, process_instance_report.report_metadata['columns'])
report_metadata = process_instance_report.report_metadata report_metadata = process_instance_report.report_metadata
print(f"results: {results}")
import pdb; pdb.set_trace()
response_json = { response_json = {
"report_identifier": process_instance_report.identifier, "report_identifier": process_instance_report.identifier,

View File

@ -2576,6 +2576,7 @@ class TestProcessApi(BaseTest):
{"Header": "ID", "accessor": "id"}, {"Header": "ID", "accessor": "id"},
{"Header": "Status", "accessor": "status"}, {"Header": "Status", "accessor": "status"},
{"Header": "Key One", "accessor": "key1"}, {"Header": "Key One", "accessor": "key1"},
# {"Header": "Key Two", "accessor": "key2"},
], ],
"order_by": ["status"], "order_by": ["status"],
"filter_by": [], "filter_by": [],
@ -2588,17 +2589,17 @@ class TestProcessApi(BaseTest):
response = client.get( response = client.get(
f"/v1.0/process-instances?report_identifier={process_instance_report.identifier}", f"/v1.0/process-instances?report_identifier={process_instance_report.identifier}",
# f"/v1.0/process-instances?report_identifier=demo1",
headers=self.logged_in_headers(with_super_admin_user), headers=self.logged_in_headers(with_super_admin_user),
) )
print(f"response.json: {response.json}")
assert response.json is not None assert response.json is not None
assert response.status_code == 200 assert response.status_code == 200
assert len(response.json["results"]) == 1 assert len(response.json["results"]) == 1
assert response.json["results"][0]["status"] == "complete" assert response.json["results"][0]["status"] == "complete"
assert response.json["results"][0]["id"] == process_instance.id assert response.json["results"][0]["id"] == process_instance.id
# assert response.json["results"][0]["key1"] == "value1" assert response.json["results"][0]["key1"] == "value1"
# assert response.json["results"][0]["key2"] == "value2"
assert response.json["pagination"]["count"] == 1 assert response.json["pagination"]["count"] == 1
assert response.json["pagination"]["pages"] == 1 assert response.json["pagination"]["pages"] == 1
assert response.json["pagination"]["total"] == 1 assert response.json["pagination"]["total"] == 1