diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py b/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py index a1982591..c3c95c3a 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py @@ -771,29 +771,31 @@ class ProcessInstanceProcessor: lane_assignment_id = None if re.match(r"(process.?)initiator", task_lane, re.IGNORECASE): potential_owner_ids = [self.process_instance_model.process_initiator_id] - elif "lane_owners" in task.data and task_lane in task.data["lane_owners"]: - for username in task.data["lane_owners"][task_lane]: - lane_owner_user = UserModel.query.filter_by(username=username).first() - if lane_owner_user is not None: - potential_owner_ids.append(lane_owner_user.id) - self.raise_if_no_potential_owners( - potential_owner_ids, - ( - "No users found in task data lane owner list for lane:" - f" {task_lane}. The user list used:" - f" {task.data['lane_owners'][task_lane]}" - ), - ) else: group_model = GroupModel.query.filter_by(identifier=task_lane).first() - if group_model is None: - raise (NoPotentialOwnersForTaskError(f"Could not find a group with name matching lane: {task_lane}")) - potential_owner_ids = [i.user_id for i in group_model.user_group_assignments] - lane_assignment_id = group_model.id - self.raise_if_no_potential_owners( - potential_owner_ids, - f"Could not find any users in group to assign to lane: {task_lane}", - ) + if group_model is not None: + lane_assignment_id = group_model.id + if "lane_owners" in task.data and task_lane in task.data["lane_owners"]: + for username in task.data["lane_owners"][task_lane]: + lane_owner_user = UserModel.query.filter_by(username=username).first() + if lane_owner_user is not None: + potential_owner_ids.append(lane_owner_user.id) + self.raise_if_no_potential_owners( + potential_owner_ids, + ( + "No users found in task data lane owner list for lane:" + f" {task_lane}. The user list used:" + f" {task.data['lane_owners'][task_lane]}" + ), + ) + else: + if group_model is None: + raise (NoPotentialOwnersForTaskError(f"Could not find a group with name matching lane: {task_lane}")) + potential_owner_ids = [i.user_id for i in group_model.user_group_assignments] + self.raise_if_no_potential_owners( + potential_owner_ids, + f"Could not find any users in group to assign to lane: {task_lane}", + ) return { "potential_owner_ids": potential_owner_ids, diff --git a/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_process_instance_processor.py b/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_process_instance_processor.py index 2dc52639..1bfef4d7 100644 --- a/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_process_instance_processor.py +++ b/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_process_instance_processor.py @@ -164,7 +164,7 @@ class TestProcessInstanceProcessor(BaseTest): assert len(process_instance.active_human_tasks) == 1 human_task = process_instance.active_human_tasks[0] - assert human_task.lane_assignment_id is None + assert human_task.lane_assignment_id == finance_group.id assert len(human_task.potential_owners) == 2 assert human_task.potential_owners == [finance_user_three, finance_user_four] @@ -179,7 +179,7 @@ class TestProcessInstanceProcessor(BaseTest): assert human_task.completed_by_user_id == finance_user_three.id assert len(process_instance.active_human_tasks) == 1 human_task = process_instance.active_human_tasks[0] - assert human_task.lane_assignment_id is None + assert human_task.lane_assignment_id == finance_group.id assert len(human_task.potential_owners) == 1 assert human_task.potential_owners[0] == finance_user_four