From 9456dac8b92862120f580bfbd59327b83a78fd4c Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Tue, 7 Jun 2022 16:44:26 +0200 Subject: [PATCH] separated function get_subset into 2 separated functions --- openpype/client/__init__.py | 6 +- openpype/client/entities.py | 73 ++++++++++--------- openpype/tools/loader/widgets.py | 4 +- openpype/tools/sceneinventory/model.py | 4 +- .../tools/sceneinventory/switch_dialog.py | 26 +++---- .../widgets/widget_family.py | 8 +- 6 files changed, 63 insertions(+), 58 deletions(-) diff --git a/openpype/client/__init__.py b/openpype/client/__init__.py index 2ba2a3693e..34257cf3dc 100644 --- a/openpype/client/__init__.py +++ b/openpype/client/__init__.py @@ -7,7 +7,8 @@ from .entities import ( get_assets, get_asset_ids_with_subsets, - get_subset, + get_subset_by_id, + get_subset_by_name, get_subsets, get_subset_families, @@ -39,7 +40,8 @@ __all__ = ( "get_assets", "get_asset_ids_with_subsets", - "get_subset", + "get_subset_by_id", + "get_subset_by_name", "get_subsets", "get_subset_families", diff --git a/openpype/client/entities.py b/openpype/client/entities.py index 16dc3d76a9..07f6bb2e65 100644 --- a/openpype/client/entities.py +++ b/openpype/client/entities.py @@ -223,29 +223,13 @@ def get_asset_ids_with_subsets(project_name, asset_ids=None): return asset_ids_with_subsets -def get_subset( - project_name, - subset_id=None, - subset_name=None, - asset_id=None, - fields=None -): - """Single subset document by subset id or name and parent id. - - When subset id is defined it is not needed to add any other arguments but - subset name filter must be always combined with asset id (or subset id). - - Question: - This could be split into more functions? +def get_subset_by_id(project_name, subset_id, fields=None): + """Single subset document by it's id. Args: - project_name (str): Name of project where to look for subset. + project_name (str): Name of project where to look for queried entities. subset_id (ObjectId): Id of subset which should be found. - subset_name (str): Name of asset. Must be combined with 'asset_id' or - 'subset_id' arguments otherwise result is 'None'. - asset_id (ObjectId): Id of parent asset. Must be combined with - 'subset_name' or 'subset_id'. - fields (list): Fields that should be returned. All fields are + fields (list[str]): Fields that should be returned. All fields are returned if 'None' is passed. Returns: @@ -253,23 +237,42 @@ def get_subset( Dict: Subset document which can be reduced to specified 'fields'. """ - query_filters = {"type": "subset"} - has_valid_filters = False - if subset_id is not None: - query_filters["_id"] = _convert_id(asset_id) - has_valid_filters = True - - if subset_name is not None: - if asset_id is not None: - has_valid_filters = True - query_filters["name"] = subset_name - - if asset_id is not None: - query_filters["parent"] = _convert_id(asset_id) - - if not has_valid_filters: + subset_id = _convert_id(subset_id) + if not subset_id: return None + query_filters = {"type": "subset", "_id": subset_id} + conn = _get_project_connection(project_name) + return conn.find_one(query_filters, _prepare_fields(fields)) + + +def get_subset_by_name(project_name, subset_name, asset_id, fields=None): + """Single subset document by subset name and it's version id. + + Args: + project_name (str): Name of project where to look for queried entities. + subset_name (str): Name of subset. + asset_id (str|ObjectId): Id of parent asset. + fields (list[str]): Fields that should be returned. All fields are + returned if 'None' is passed. + + Returns: + None: If subset with specified filters was not found. + Dict: Subset document which can be reduced to specified 'fields'. + """ + + if not subset_name: + return None + + asset_id = _convert_id(asset_id) + if not asset_id: + return None + + query_filters = { + "type": "subset", + "name": subset_name, + "parent": asset_id + } conn = _get_project_connection(project_name) return conn.find_one(query_filters, _prepare_fields(fields)) diff --git a/openpype/tools/loader/widgets.py b/openpype/tools/loader/widgets.py index 6c7acc593d..4a9a911f93 100644 --- a/openpype/tools/loader/widgets.py +++ b/openpype/tools/loader/widgets.py @@ -9,7 +9,7 @@ from Qt import QtWidgets, QtCore, QtGui from openpype.client import ( get_subset_families, - get_subset, + get_subset_by_id, get_subsets, get_version, get_versions, @@ -688,7 +688,7 @@ class VersionTextEdit(QtWidgets.QTextEdit): _version_doc["name"] ) - subset = get_subset(project_name, subset_id=version_doc["parent"]) + subset = get_subset_by_id(project_name, version_doc["parent"]) assert subset, "No valid subset parent for version" # Define readable creation timestamp diff --git a/openpype/tools/sceneinventory/model.py b/openpype/tools/sceneinventory/model.py index 6d813af45b..b36f7f4cea 100644 --- a/openpype/tools/sceneinventory/model.py +++ b/openpype/tools/sceneinventory/model.py @@ -8,7 +8,7 @@ import qtawesome from openpype.client import ( get_asset_by_id, - get_subset, + get_subset_by_id, get_version, get_last_version_for_subset, get_representation, @@ -336,7 +336,7 @@ class InventoryModel(TreeModel): version["name"] = HeroVersionType(_version["name"]) version["data"] = _version["data"] - subset = get_subset(project_name, subset_id=version["parent"]) + subset = get_subset_by_id(project_name, version["parent"]) if not subset: not_found["subset"].append(group_items) not_found_ids.append(repre_id) diff --git a/openpype/tools/sceneinventory/switch_dialog.py b/openpype/tools/sceneinventory/switch_dialog.py index 6d6294af6f..92ef2b3553 100644 --- a/openpype/tools/sceneinventory/switch_dialog.py +++ b/openpype/tools/sceneinventory/switch_dialog.py @@ -7,7 +7,7 @@ from bson.objectid import ObjectId from openpype.client import ( get_asset_by_name, get_assets, - get_subset, + get_subset_by_name, get_subsets, get_versions, get_hero_versions, @@ -537,10 +537,10 @@ class SwitchAssetDialog(QtWidgets.QDialog): self, asset_doc, selected_subset, selected_repre ): project_name = self.active_project() - subset_doc = get_subset( + subset_doc = get_subset_by_name( project_name, - subset_name=selected_subset, - asset_id=asset_doc["_id"], + selected_subset, + asset_doc["_id"], fields=["_id"] ) @@ -560,10 +560,10 @@ class SwitchAssetDialog(QtWidgets.QDialog): def _get_current_output_repre_ids_xxo(self, asset_doc, selected_subset): project_name = self.active_project() - subset_doc = get_subset( + subset_doc = get_subset_by_name( project_name, - asset_id=asset_doc["_id"], - subset_name=selected_subset, + selected_subset, + asset_doc["_id"], fields=["_id"] ) if not subset_doc: @@ -835,10 +835,10 @@ class SwitchAssetDialog(QtWidgets.QDialog): asset_doc = get_asset_by_name( project_name, selected_asset, fields=["_id"] ) - subset_doc = get_subset( + subset_doc = get_subset_by_name( project_name, - asset_id=asset_doc["_id"], - subset_name=selected_subset, + selected_subset, + asset_doc["_id"], fields=["_id"] ) @@ -1046,10 +1046,10 @@ class SwitchAssetDialog(QtWidgets.QDialog): asset_doc = get_asset_by_name( project_name, selected_asset, fields=["_id"] ) - subset_doc = get_subset( + subset_doc = get_subset_by_name( project_name, - asset_id=asset_doc["_id"], - subset_name=selected_subset, + selected_subset, + asset_doc["_id"], fields=["_id"] ) subset_id = subset_doc["_id"] diff --git a/openpype/tools/standalonepublish/widgets/widget_family.py b/openpype/tools/standalonepublish/widgets/widget_family.py index fa157d37f1..2f00cfe7bb 100644 --- a/openpype/tools/standalonepublish/widgets/widget_family.py +++ b/openpype/tools/standalonepublish/widgets/widget_family.py @@ -4,7 +4,7 @@ from Qt import QtWidgets, QtCore from openpype.client import ( get_asset_by_name, - get_subset, + get_subset_by_name, get_subsets, get_last_version_for_subset, ) @@ -315,10 +315,10 @@ class FamilyWidget(QtWidgets.QWidget): ) if asset_doc: - subset_doc = get_subset( + subset_doc = get_subset_by_name( project_name, - subset_name=subset_name, - asset_id=asset_doc['_id'], + subset_name, + asset_doc['_id'], fields=["_id"] )