From ba6ef6d2ae035361d0a7282983555990c322cc7c Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Tue, 7 Jun 2022 18:23:44 +0200 Subject: [PATCH] split 'get_last_version_for_subset' into 'get_last_version_by_subset_id' and 'get_last_version_by_subset_name' --- openpype/client/__init__.py | 6 +- openpype/client/entities.py | 81 ++++++++++++------- openpype/tools/mayalookassigner/app.py | 6 +- .../tools/mayalookassigner/vray_proxies.py | 4 +- openpype/tools/sceneinventory/model.py | 6 +- .../widgets/widget_family.py | 6 +- 6 files changed, 65 insertions(+), 44 deletions(-) diff --git a/openpype/client/__init__.py b/openpype/client/__init__.py index 4f8b948c93..2ef32d6a83 100644 --- a/openpype/client/__init__.py +++ b/openpype/client/__init__.py @@ -19,7 +19,8 @@ from .entities import ( get_hero_version_by_subset_id, get_hero_versions, get_last_versions, - get_last_version_for_subset, + get_last_version_by_subset_id, + get_last_version_by_subset_name, get_output_link_versions, get_representation, @@ -53,7 +54,8 @@ __all__ = ( "get_hero_version_by_subset_id", "get_hero_versions", "get_last_versions", - "get_last_version_for_subset", + "get_last_version_by_subset_id", + "get_last_version_by_subset_name", "get_output_link_versions", "get_representation", diff --git a/openpype/client/entities.py b/openpype/client/entities.py index bf033e7c81..232d9aebcc 100644 --- a/openpype/client/entities.py +++ b/openpype/client/entities.py @@ -228,7 +228,7 @@ def get_subset_by_id(project_name, subset_id, fields=None): Args: project_name (str): Name of project where to look for queried entities. - subset_id (ObjectId): Id of subset which should be found. + subset_id (str|ObjectId): Id of subset which should be found. fields (list[str]): Fields that should be returned. All fields are returned if 'None' is passed. @@ -375,7 +375,7 @@ def get_version_by_id(project_name, version_id, fields=None): Args: project_name (str): Name of project where to look for queried entities. - version_id (ObjectId): Id of version which should be found. + version_id (str|ObjectId): Id of version which should be found. fields (list[str]): Fields that should be returned. All fields are returned if 'None' is passed. @@ -402,7 +402,7 @@ def get_version_by_name(project_name, version, subset_id, fields=None): Args: project_name (str): Name of project where to look for queried entities. version (int): name of version entity (it's version). - subset_id (ObjectId): Id of version which should be found. + subset_id (str|ObjectId): Id of version which should be found. fields (list[str]): Fields that should be returned. All fields are returned if 'None' is passed. @@ -622,13 +622,13 @@ def get_output_link_versions(project_name, version_id, fields=None): def get_last_versions(project_name, subset_ids, fields=None): - """Retrieve all latest versions for entered subset_ids. + """Latest versions for entered subset_ids. Args: subset_ids (list): List of subset ids. Returns: - dict: Key is subset id and value is last version name. + dict[ObjectId, int]: Key is subset id and value is last version name. """ subset_ids = _convert_ids(subset_ids) @@ -665,35 +665,60 @@ def get_last_versions(project_name, subset_ids, fields=None): } -def get_last_version_for_subset( - project_name, subset_id=None, subset_name=None, asset_id=None, fields=None -): - subset_doc = get_subset( - project_name, - subset_id=subset_id, - subset_name=subset_name, - asset_id=asset_id, - fields=["_id"] - ) - if not subset_doc: +def get_last_version_by_subset_id(project_name, subset_id, fields=None): + """Last version for passed subset id. + + Args: + project_name (str): Name of project where to look for queried entities. + subset_id (str|ObjectId): Id of version which should be found. + fields (list[str]): Fields that should be returned. All fields are + returned if 'None' is passed. + + Returns: + None: If version with specified filters was not found. + Dict: Version document which can be reduced to specified 'fields'. + """ + + subset_id = _convert_id(subset_id) + if not subset_id: return None - subset_id = subset_doc["_id"] + last_versions = get_last_versions( project_name, subset_ids=[subset_id], fields=fields ) return last_versions.get(subset_id) -def get_representation( - project_name, - representation_id=None, - representation_name=None, - version_id=None, - fields=None +def get_last_version_by_subset_name( + project_name, subset_name, asset_id, fields=None ): + """Last version for passed subset name under asset id. + + Args: + project_name (str): Name of project where to look for queried entities. + subset_name (str): Name of subset. + asset_id (str|ObjectId): Asset id which is parnt of passed subset name. + fields (list[str]): Fields that should be returned. All fields are + returned if 'None' is passed. + + Returns: + None: If version with specified filters was not found. + Dict: Version document which can be reduced to specified 'fields'. + """ + + subset_doc = get_subset_by_name( + project_name, subset_name, asset_id, fields=["_id"] + ) + if not subset_doc: + return None + return get_last_version_by_subset_id( + project_name, subset_doc["_id"], fields=fields + ) + + +def get_representation(project_name, representation_id, fields=None): if not representation_id: - if not representation_name or not version_id: - return None + return None repre_types = ["representation", "archived_representations"] query_filter = { @@ -702,12 +727,6 @@ def get_representation( if representation_id is not None: query_filter["_id"] = _convert_id(representation_id) - if representation_name is not None: - query_filter["name"] = representation_name - - if version_id is not None: - query_filter["parent"] = version_id - conn = _get_project_connection(project_name) return conn.find_one(query_filter, _prepare_fields(fields)) diff --git a/openpype/tools/mayalookassigner/app.py b/openpype/tools/mayalookassigner/app.py index 427edf8245..5665acea42 100644 --- a/openpype/tools/mayalookassigner/app.py +++ b/openpype/tools/mayalookassigner/app.py @@ -4,7 +4,7 @@ import logging from Qt import QtWidgets, QtCore -from openpype.client import get_last_version_for_subset +from openpype.client import get_last_version_by_subset_id from openpype import style from openpype.pipeline import legacy_io from openpype.tools.utils.lib import qt_app_context @@ -230,8 +230,8 @@ class MayaLookAssignerWindow(QtWidgets.QWidget): continue # Get the latest version of this asset's look subset - version = get_last_version_for_subset( - project_name, subset_id=assign_look["_id"], fields=["_id"] + version = get_last_version_by_subset_id( + project_name, assign_look["_id"], fields=["_id"] ) subset_name = assign_look["name"] diff --git a/openpype/tools/mayalookassigner/vray_proxies.py b/openpype/tools/mayalookassigner/vray_proxies.py index b2ba21f944..889396e555 100644 --- a/openpype/tools/mayalookassigner/vray_proxies.py +++ b/openpype/tools/mayalookassigner/vray_proxies.py @@ -12,7 +12,7 @@ from maya import cmds from openpype.client import ( get_representation_by_name, - get_last_version_for_subset, + get_last_version_by_subset_name, ) from openpype.pipeline import ( legacy_io, @@ -251,7 +251,7 @@ def vrayproxy_assign_look(vrayproxy, subset="lookDefault"): for asset_id, node_ids in node_ids_by_asset_id.items(): # Get latest look version - version = get_last_version_for_subset( + version = get_last_version_by_subset_name( project_name, subset_name=subset, asset_id=asset_id, diff --git a/openpype/tools/sceneinventory/model.py b/openpype/tools/sceneinventory/model.py index a5d856fe72..8c49933e80 100644 --- a/openpype/tools/sceneinventory/model.py +++ b/openpype/tools/sceneinventory/model.py @@ -10,7 +10,7 @@ from openpype.client import ( get_asset_by_id, get_subset_by_id, get_version_by_id, - get_last_version_for_subset, + get_last_version_by_subset_id, get_representation, ) from openpype.pipeline import ( @@ -403,8 +403,8 @@ class InventoryModel(TreeModel): # Store the highest available version so the model can know # whether current version is currently up-to-date. - highest_version = get_last_version_for_subset( - project_name, subset_id=version["parent"] + highest_version = get_last_version_by_subset_id( + project_name, version["parent"] ) # create the group header diff --git a/openpype/tools/standalonepublish/widgets/widget_family.py b/openpype/tools/standalonepublish/widgets/widget_family.py index 2f00cfe7bb..1736be84ab 100644 --- a/openpype/tools/standalonepublish/widgets/widget_family.py +++ b/openpype/tools/standalonepublish/widgets/widget_family.py @@ -6,7 +6,7 @@ from openpype.client import ( get_asset_by_name, get_subset_by_name, get_subsets, - get_last_version_for_subset, + get_last_version_by_subset_id, ) from openpype.api import get_project_settings from openpype.pipeline import LegacyCreator @@ -323,9 +323,9 @@ class FamilyWidget(QtWidgets.QWidget): ) if subset_doc: - last_version = get_last_version_for_subset( + last_version = get_last_version_by_subset_id( project_name, - subset_id=subset_doc["_id"], + subset_doc["_id"], fields=["name"] ) if last_version: