diff --git a/client/ayon_core/tools/common_models/hierarchy.py b/client/ayon_core/tools/common_models/hierarchy.py index a90e06a63b..f92563db20 100644 --- a/client/ayon_core/tools/common_models/hierarchy.py +++ b/client/ayon_core/tools/common_models/hierarchy.py @@ -1,3 +1,4 @@ +import time import collections import contextlib from abc import ABCMeta, abstractmethod @@ -535,13 +536,15 @@ class HierarchyModel(object): def _refresh_tasks_cache(self, project_name, folder_id, sender=None): if folder_id in self._tasks_refreshing: + while folder_id in self._tasks_refreshing: + time.sleep(0.01) return + cache = self._task_items[project_name][folder_id] with self._task_refresh_event_manager( project_name, folder_id, sender ): - task_items = self._query_tasks(project_name, folder_id) - self._task_items[project_name][folder_id] = task_items + cache.update_data(self._query_tasks(project_name, folder_id)) def _query_tasks(self, project_name, folder_id): tasks = list(ayon_api.get_tasks( diff --git a/client/ayon_core/tools/utils/tasks_widget.py b/client/ayon_core/tools/utils/tasks_widget.py index 314521b6b0..bba7b93925 100644 --- a/client/ayon_core/tools/utils/tasks_widget.py +++ b/client/ayon_core/tools/utils/tasks_widget.py @@ -191,12 +191,12 @@ class TasksQtModel(QtGui.QStandardItemModel): def _thread_getter(self, project_name, folder_id): task_items = self._controller.get_task_items( - project_name, folder_id + project_name, folder_id, sender=TASKS_MODEL_SENDER_NAME ) task_type_items = {} if hasattr(self._controller, "get_task_type_items"): task_type_items = self._controller.get_task_type_items( - project_name + project_name, sender=TASKS_MODEL_SENDER_NAME ) return task_items, task_type_items @@ -580,6 +580,7 @@ class TasksWidget(QtWidgets.QWidget): return if expected_data is None: expected_data = self._controller.get_expected_selection_data() + folder_data = expected_data.get("folder") task_data = expected_data.get("task") if (