From 4583dcdaac8448ecdcaa8e33a4f58ca75b2358aa Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 25 Nov 2022 17:16:26 -0500 Subject: [PATCH] adding the username to the report tables --- .../src/spiffworkflow_backend/models/process_instance.py | 1 + .../spiffworkflow_backend/routes/process_api_blueprint.py | 5 +++++ .../services/process_instance_report_service.py | 4 ++++ .../src/components/ProcessInstanceListTable.tsx | 1 + 4 files changed, 11 insertions(+) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance.py index 0109e8a01..570e7455e 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/process_instance.py @@ -112,6 +112,7 @@ class ProcessInstanceModel(SpiffworkflowBaseDBModel): "bpmn_version_control_identifier": self.bpmn_version_control_identifier, "bpmn_version_control_type": self.bpmn_version_control_type, "spiff_step": self.spiff_step, + "username": self.process_initiator.username } @property diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_api_blueprint.py b/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_api_blueprint.py index 37a1b8280..0505f7559 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_api_blueprint.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_api_blueprint.py @@ -31,6 +31,7 @@ from sqlalchemy import and_ from sqlalchemy import asc from sqlalchemy import desc from sqlalchemy import select +from sqlalchemy.orm import joinedload from spiffworkflow_backend.exceptions.process_entity_not_found_error import ( ProcessEntityNotFoundError, @@ -812,6 +813,9 @@ def process_instance_list( # process_model_identifier = un_modify_modified_process_model_id(modified_process_model_identifier) process_instance_query = ProcessInstanceModel.query + # Always join that hot user table for good performance at serialization time. + process_instance_query = process_instance_query.options(joinedload(ProcessInstanceModel.process_initiator)) + if report_filter.process_model_identifier is not None: process_model = get_process_model( f"{report_filter.process_model_identifier}", @@ -871,6 +875,7 @@ def process_instance_list( # process_instance_query = process_instance_query.join(UserModel, UserModel.id == ProcessInstanceModel.process_initiator_id) # process_instance_query = process_instance_query.add_columns(UserModel.username) # search for process_instance.UserModel.username in this file for more details about why adding columns is annoying. + process_instance_query = process_instance_query.filter( ProcessInstanceModel.process_initiator_id != g.user.id ) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_report_service.py b/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_report_service.py index f49fc9f78..1f2a7bb6e 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_report_service.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_report_service.py @@ -81,6 +81,7 @@ class ProcessInstanceReportService: }, {"Header": "start_in_seconds", "accessor": "start_in_seconds"}, {"Header": "end_in_seconds", "accessor": "end_in_seconds"}, + {"Header": "username", "accessor": "username"}, {"Header": "status", "accessor": "status"}, ], }, @@ -106,6 +107,7 @@ class ProcessInstanceReportService: }, {"Header": "start_in_seconds", "accessor": "start_in_seconds"}, {"Header": "end_in_seconds", "accessor": "end_in_seconds"}, + {"Header": "username", "accessor": "username"}, {"Header": "status", "accessor": "status"}, ], "filter_by": [ @@ -121,7 +123,9 @@ class ProcessInstanceReportService: }, {"Header": "start_in_seconds", "accessor": "start_in_seconds"}, {"Header": "end_in_seconds", "accessor": "end_in_seconds"}, + {"Header": "username", "accessor": "username"}, {"Header": "status", "accessor": "status"}, + ], "filter_by": [ { diff --git a/spiffworkflow-frontend/src/components/ProcessInstanceListTable.tsx b/spiffworkflow-frontend/src/components/ProcessInstanceListTable.tsx index b9560cbf0..bd060af60 100644 --- a/spiffworkflow-frontend/src/components/ProcessInstanceListTable.tsx +++ b/spiffworkflow-frontend/src/components/ProcessInstanceListTable.tsx @@ -629,6 +629,7 @@ export default function ProcessInstanceListTable({ start_in_seconds: 'Start Time', end_in_seconds: 'End Time', status: 'Status', + username: 'Started By', spiff_step: 'SpiffWorkflow Step', }; const getHeaderLabel = (header: string) => {