diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/api.yml b/spiffworkflow-backend/src/spiffworkflow_backend/api.yml index 0d3a4afef..12b40160e 100755 --- a/spiffworkflow-backend/src/spiffworkflow_backend/api.yml +++ b/spiffworkflow-backend/src/spiffworkflow_backend/api.yml @@ -601,7 +601,7 @@ paths: description: Specifies the identifier of a report to use, if any schema: type: integer - - name: group_identifier + - name: user_group_identifier in: query required: false description: The identifier of the group to get the process instances for @@ -714,7 +714,7 @@ paths: description: Specifies the identifier of a report to use, if any schema: type: integer - - name: group_identifier + - name: user_group_identifier in: query required: false description: The identifier of the group to get the process instances for @@ -1328,7 +1328,7 @@ paths: /tasks/for-my-groups: parameters: - - name: group_identifier + - name: user_group_identifier in: query required: false description: The identifier of the group to get the tasks for 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 773533ae2..82a35fc5c 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 @@ -380,7 +380,11 @@ class ProcessInstanceReportService: ProcessInstanceModel.status.in_(ProcessInstanceModel.terminal_statuses()) # type: ignore ) - if report_filter.with_relation_to_me is True: + if ( + not report_filter.with_tasks_completed_by_me + and not report_filter.with_tasks_assigned_to_my_group + and report_filter.with_relation_to_me is True + ): process_instance_query = process_instance_query.outerjoin( HumanTaskModel ).outerjoin( @@ -410,17 +414,14 @@ class ProcessInstanceReportService: ) if report_filter.with_tasks_assigned_to_my_group is True: + group_model_join_conditions = [GroupModel.id == HumanTaskModel.lane_assignment_id] if report_filter.user_group_identifier: - process_instance_query = process_instance_query.join( - GroupModel, - GroupModel.identifier == report_filter.user_group_identifier, - ) - else: - process_instance_query = process_instance_query.join(HumanTaskModel) - process_instance_query = process_instance_query.join( - GroupModel, - GroupModel.id == HumanTaskModel.lane_assignment_id, - ) + group_model_join_conditions.append(GroupModel.identifier == report_filter.user_group_identifier) + process_instance_query = process_instance_query.join(HumanTaskModel) + process_instance_query = process_instance_query.join( + GroupModel, + and_(*group_model_join_conditions) + ) process_instance_query = process_instance_query.join( UserGroupAssignmentModel, UserGroupAssignmentModel.group_id == GroupModel.id, diff --git a/spiffworkflow-frontend/src/components/TasksWaitingForMyGroups.tsx b/spiffworkflow-frontend/src/components/TasksWaitingForMyGroups.tsx index b7515c916..dab0372b8 100644 --- a/spiffworkflow-frontend/src/components/TasksWaitingForMyGroups.tsx +++ b/spiffworkflow-frontend/src/components/TasksWaitingForMyGroups.tsx @@ -21,7 +21,7 @@ export default function TasksWaitingForMyGroups() { return ( );