From 723932cfac04cfb114b949898fe0a07a851f9f9b Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 20 Aug 2025 15:38:56 +0200 Subject: [PATCH] reduced information that is used in loader for action item --- client/ayon_core/tools/loader/abstract.py | 36 ++++---------- client/ayon_core/tools/loader/control.py | 10 ++-- .../ayon_core/tools/loader/models/actions.py | 47 ++++++------------- .../tools/loader/ui/products_widget.py | 6 +-- .../tools/loader/ui/repres_widget.py | 6 +-- 5 files changed, 33 insertions(+), 72 deletions(-) diff --git a/client/ayon_core/tools/loader/abstract.py b/client/ayon_core/tools/loader/abstract.py index 5ab7e78212..04cf0c6037 100644 --- a/client/ayon_core/tools/loader/abstract.py +++ b/client/ayon_core/tools/loader/abstract.py @@ -324,11 +324,6 @@ class ActionItem: options (Union[list[AbstractAttrDef], list[qargparse.QArgument]]): Action options. Note: 'qargparse' is considered as deprecated. order (int): Action order. - project_name (str): Project name. - folder_ids (list[str]): Folder ids. - product_ids (list[str]): Product ids. - version_ids (list[str]): Version ids. - representation_ids (list[str]): Representation ids. """ def __init__( @@ -339,11 +334,6 @@ class ActionItem: tooltip, options, order, - project_name, - folder_ids, - product_ids, - version_ids, - representation_ids, ): self.identifier = identifier self.label = label @@ -351,11 +341,6 @@ class ActionItem: self.tooltip = tooltip self.options = options self.order = order - self.project_name = project_name - self.folder_ids = folder_ids - self.product_ids = product_ids - self.version_ids = version_ids - self.representation_ids = representation_ids def _options_to_data(self): options = self.options @@ -382,11 +367,6 @@ class ActionItem: "tooltip": self.tooltip, "options": options, "order": self.order, - "project_name": self.project_name, - "folder_ids": self.folder_ids, - "product_ids": self.product_ids, - "version_ids": self.version_ids, - "representation_ids": self.representation_ids, } @classmethod @@ -1013,11 +993,11 @@ class FrontendLoaderController(_BaseLoaderController): @abstractmethod def trigger_action_item( self, - identifier, - options, - project_name, - version_ids, - representation_ids + identifier: str, + options: dict[str, Any], + project_name: str, + entity_ids: set[str], + entity_type: str, ): """Trigger action item. @@ -1038,10 +1018,10 @@ class FrontendLoaderController(_BaseLoaderController): identifier (str): Action identifier. options (dict[str, Any]): Action option values from UI. project_name (str): Project name. - version_ids (Iterable[str]): Version ids. - representation_ids (Iterable[str]): Representation ids. - """ + entity_ids (set[str]): Selected entity ids. + entity_type (str): Selected entity type. + """ pass @abstractmethod diff --git a/client/ayon_core/tools/loader/control.py b/client/ayon_core/tools/loader/control.py index 7ba42a0981..a48fa7b853 100644 --- a/client/ayon_core/tools/loader/control.py +++ b/client/ayon_core/tools/loader/control.py @@ -309,14 +309,14 @@ class LoaderController(BackendLoaderController, FrontendLoaderController): identifier, options, project_name, - version_ids, - representation_ids + entity_ids, + entity_type, ): if self._sitesync_model.is_sitesync_action(identifier): self._sitesync_model.trigger_action_item( identifier, project_name, - representation_ids + entity_ids, ) return @@ -324,8 +324,8 @@ class LoaderController(BackendLoaderController, FrontendLoaderController): identifier, options, project_name, - version_ids, - representation_ids + entity_ids, + entity_type, ) # Selection model wrappers diff --git a/client/ayon_core/tools/loader/models/actions.py b/client/ayon_core/tools/loader/models/actions.py index b792f92dfd..ec0997685f 100644 --- a/client/ayon_core/tools/loader/models/actions.py +++ b/client/ayon_core/tools/loader/models/actions.py @@ -113,11 +113,11 @@ class LoaderActionsModel: def trigger_action_item( self, - identifier, - options, - project_name, - version_ids, - representation_ids + identifier: str, + options: dict[str, Any], + project_name: str, + entity_ids: set[str], + entity_type: str, ): """Trigger action by identifier. @@ -131,10 +131,10 @@ class LoaderActionsModel: identifier (str): Loader identifier. options (dict[str, Any]): Loader option values. project_name (str): Project name. - version_ids (Iterable[str]): Version ids. - representation_ids (Iterable[str]): Representation ids. - """ + entity_ids (set[str]): Entity ids. + entity_type (str): Entity type. + """ event_data = { "identifier": identifier, "id": uuid.uuid4().hex, @@ -145,23 +145,24 @@ class LoaderActionsModel: ACTIONS_MODEL_SENDER, ) loader = self._get_loader_by_identifier(project_name, identifier) - if representation_ids is not None: + if entity_type == "representation": error_info = self._trigger_representation_loader( loader, options, project_name, - representation_ids, + entity_ids, ) - elif version_ids is not None: + elif entity_type == "version": error_info = self._trigger_version_loader( loader, options, project_name, - version_ids, + entity_ids, ) else: raise NotImplementedError( - "Invalid arguments to trigger action item") + f"Invalid entity type '{entity_type}' to trigger action item" + ) event_data["error_info"] = error_info self._controller.emit_event( @@ -276,11 +277,6 @@ class LoaderActionsModel: self, loader, contexts, - project_name, - folder_ids=None, - product_ids=None, - version_ids=None, - representation_ids=None, repre_name=None, ): label = self._get_action_label(loader) @@ -293,11 +289,6 @@ class LoaderActionsModel: tooltip=self._get_action_tooltip(loader), options=loader.get_options(contexts), order=loader.order, - project_name=project_name, - folder_ids=folder_ids, - product_ids=product_ids, - version_ids=version_ids, - representation_ids=representation_ids, ) def _get_loaders(self, project_name): @@ -570,17 +561,11 @@ class LoaderActionsModel: item = self._create_loader_action_item( loader, repre_contexts, - project_name=project_name, - folder_ids=repre_folder_ids, - product_ids=repre_product_ids, - version_ids=repre_version_ids, - representation_ids=repre_ids, repre_name=repre_name, ) action_items.append(item) # Product Loaders. - version_ids = set(version_context_by_id.keys()) product_folder_ids = set() product_ids = set() for product_context in version_context_by_id.values(): @@ -592,10 +577,6 @@ class LoaderActionsModel: item = self._create_loader_action_item( loader, version_contexts, - project_name=project_name, - folder_ids=product_folder_ids, - product_ids=product_ids, - version_ids=version_ids, ) action_items.append(item) diff --git a/client/ayon_core/tools/loader/ui/products_widget.py b/client/ayon_core/tools/loader/ui/products_widget.py index e5bb75a208..caa2ee82d0 100644 --- a/client/ayon_core/tools/loader/ui/products_widget.py +++ b/client/ayon_core/tools/loader/ui/products_widget.py @@ -439,9 +439,9 @@ class ProductsWidget(QtWidgets.QWidget): self._controller.trigger_action_item( action_item.identifier, options, - action_item.project_name, - version_ids=action_item.version_ids, - representation_ids=action_item.representation_ids, + project_name, + version_ids, + "version", ) def _on_selection_change(self): diff --git a/client/ayon_core/tools/loader/ui/repres_widget.py b/client/ayon_core/tools/loader/ui/repres_widget.py index d19ad306a3..17c429cb53 100644 --- a/client/ayon_core/tools/loader/ui/repres_widget.py +++ b/client/ayon_core/tools/loader/ui/repres_widget.py @@ -401,7 +401,7 @@ class RepresentationsWidget(QtWidgets.QWidget): self._controller.trigger_action_item( action_item.identifier, options, - action_item.project_name, - version_ids=action_item.version_ids, - representation_ids=action_item.representation_ids, + self._selected_project_name, + repre_ids, + "representation", )