mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-27 06:12:19 +01:00
task model keeps information about asset/task relations
This commit is contained in:
parent
43654be4f8
commit
39e1fdeee2
2 changed files with 34 additions and 13 deletions
|
|
@ -439,21 +439,16 @@ class PublisherController:
|
|||
output[parent_id].append(asset_doc)
|
||||
return output
|
||||
|
||||
def get_task_names_for_asset_names(self, asset_names):
|
||||
def get_task_names_by_asset_names(self, asset_names):
|
||||
task_names_by_asset_name = (
|
||||
self._asset_docs_cache.get_task_names_by_asset_name()
|
||||
)
|
||||
tasks = None
|
||||
result = {}
|
||||
for asset_name in asset_names:
|
||||
task_names = set(task_names_by_asset_name.get(asset_name, []))
|
||||
if tasks is None:
|
||||
tasks = task_names
|
||||
else:
|
||||
tasks &= task_names
|
||||
|
||||
if not tasks:
|
||||
break
|
||||
return tasks
|
||||
result[asset_name] = set(
|
||||
task_names_by_asset_name.get(asset_name) or []
|
||||
)
|
||||
return result
|
||||
|
||||
def _trigger_callbacks(self, callbacks, *args, **kwargs):
|
||||
"""Helper method to trigger callbacks stored by their rerence."""
|
||||
|
|
|
|||
|
|
@ -86,19 +86,45 @@ class TasksModel(QtGui.QStandardItemModel):
|
|||
self._controller = controller
|
||||
self._items_by_name = {}
|
||||
self._asset_names = []
|
||||
self._task_names_by_asset_name = {}
|
||||
|
||||
def set_asset_names(self, asset_names):
|
||||
self._asset_names = asset_names
|
||||
self.reset()
|
||||
|
||||
@staticmethod
|
||||
def get_intersection_of_tasks(task_names_by_asset_name):
|
||||
tasks = None
|
||||
for task_names in task_names_by_asset_name.values():
|
||||
if tasks is None:
|
||||
tasks = set(task_names)
|
||||
else:
|
||||
tasks &= set(task_names)
|
||||
|
||||
if not tasks:
|
||||
break
|
||||
return tasks or set()
|
||||
|
||||
def is_task_name_valid(self, asset_name, task_name):
|
||||
task_names = self._task_names_by_asset_name.get(asset_name)
|
||||
if task_names and task_name in task_names:
|
||||
return True
|
||||
return False
|
||||
|
||||
def reset(self):
|
||||
if not self._asset_names:
|
||||
self._items_by_name = {}
|
||||
self._task_names_by_asset_name = {}
|
||||
self.clear()
|
||||
return
|
||||
|
||||
new_task_names = self._controller.get_task_names_for_asset_names(
|
||||
self._asset_names
|
||||
task_names_by_asset_name = (
|
||||
self._controller.get_task_names_by_asset_names(self._asset_names)
|
||||
)
|
||||
self._task_names_by_asset_name = task_names_by_asset_name
|
||||
|
||||
new_task_names = self.get_intersection_of_tasks(
|
||||
task_names_by_asset_name
|
||||
)
|
||||
old_task_names = set(self._items_by_name.keys())
|
||||
if new_task_names == old_task_names:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue