separated functions to query asset by name and id

This commit is contained in:
Jakub Trllo 2022-06-07 16:28:53 +02:00
parent 9829410932
commit 0d38c76f54
17 changed files with 94 additions and 73 deletions

View file

@ -2,7 +2,8 @@ from .entities import (
get_projects,
get_project,
get_asset,
get_asset_by_id,
get_asset_by_name,
get_assets,
get_asset_ids_with_subsets,
@ -33,7 +34,8 @@ __all__ = (
"get_projects",
"get_project",
"get_asset",
"get_asset_by_id",
"get_asset_by_name",
"get_assets",
"get_asset_ids_with_subsets",
@ -56,6 +58,6 @@ __all__ = (
"get_representation_parents",
"get_representations_parents",
"get_thubmnail",
"get_thumbnail",
"get_thumbnail_id_from_source",
)

View file

@ -90,23 +90,44 @@ def get_project(project_name, active=True, inactive=False, fields=None):
return conn.find_one(query_filter, _prepare_fields(fields))
def get_asset(project_name, asset_name=None, asset_id=None, fields=None):
query_filter = {"type": "asset"}
has_filter = False
if asset_name:
has_filter = True
query_filter["name"] = asset_name
def get_asset_by_id(project_name, asset_id, fields=None):
"""Receive asset data by it's id.
if asset_id:
has_filter = True
query_filter["_id"] = _convert_id(asset_id)
Args:
project_name (str): Name of project where to look for subset.
asset_id (str|ObjectId): Asset's id.
# Avoid random asset quqery
if not has_filter:
Returns:
dict: Asset entity data.
None: Asset was not found by id.
"""
asset_id = _convert_id(asset_id)
if not asset_id:
return None
query_filter = {"type": "asset", "_id": asset_id}
conn = _get_project_connection(project_name)
return conn.find_one(query_filter, _prepare_fields(fields))
def get_asset_by_name(project_name, asset_name, fields=None):
"""Receive asset data by it's name.
Args:
project_name (str): Name of project where to look for subset.
asset_name (str): Asset's name.
Returns:
dict: Asset entity data.
None: Asset was not found by name.
"""
if not asset_name:
return None
query_filter = {"type": "asset", "name": asset_name}
conn = _get_project_connection(project_name)
return conn.find_one(query_filter, _prepare_fields(fields))

View file

@ -4,7 +4,7 @@ import re
from Qt import QtWidgets, QtCore
from openpype.client import get_asset, get_subsets
from openpype.client import get_asset_by_name, get_subsets
from openpype import style
from openpype.api import get_current_project_settings
from openpype.tools.utils.lib import qt_app_context
@ -220,8 +220,8 @@ class CreatorWindow(QtWidgets.QDialog):
asset_doc = None
if creator_plugin:
# Get the asset from the database which match with the name
asset_doc = get_asset(
project_name, asset_name=asset_name, fields=["_id"]
asset_doc = get_asset_by_name(
project_name, asset_name, fields=["_id"]
)
# Get plugin

View file

@ -4,7 +4,7 @@ import os
import maya.cmds as cmds
from openpype.client import get_asset
from openpype.client import get_asset_by_id
from openpype.pipeline import (
legacy_io,
remove_container,
@ -161,7 +161,7 @@ def create_items_from_nodes(nodes):
project_name = legacy_io.active_project()
for _id, id_nodes in id_hashes.items():
asset = get_asset(project_name, asset_id=_id, fields=["name"])
asset = get_asset_by_id(project_name, _id, fields=["name"])
# Skip if asset id is not found
if not asset:

View file

@ -10,7 +10,7 @@ except Exception:
commonmark = None
from Qt import QtWidgets, QtCore, QtGui
from openpype.client import get_asset, get_subsets
from openpype.client import get_asset_by_name, get_subsets
from openpype.lib import TaskNotSetError
from openpype.pipeline.create import (
CreatorError,
@ -650,7 +650,7 @@ class CreateDialog(QtWidgets.QDialog):
return
project_name = self.dbcon.active_project()
asset_doc = get_asset(project_name, asset_name=asset_name)
asset_doc = get_asset_by_name(project_name, asset_name)
self._asset_doc = asset_doc
if asset_doc:

View file

@ -7,7 +7,7 @@ from Qt import QtCore, QtGui
import qtawesome
from openpype.client import (
get_asset,
get_asset_by_id,
get_subset,
get_version,
get_last_version_for_subset,
@ -342,7 +342,7 @@ class InventoryModel(TreeModel):
not_found_ids.append(repre_id)
continue
asset = get_asset(project_name, asset_id=subset["parent"])
asset = get_asset_by_id(project_name, subset["parent"])
if not asset:
not_found["asset"].append(group_items)
not_found_ids.append(repre_id)

View file

@ -5,7 +5,7 @@ import qtawesome
from bson.objectid import ObjectId
from openpype.client import (
get_asset,
get_asset_by_name,
get_assets,
get_subset,
get_subsets,
@ -484,9 +484,9 @@ class SwitchAssetDialog(QtWidgets.QDialog):
# Prepare asset document if asset is selected
asset_doc = None
if selected_asset:
asset_doc = get_asset(
asset_doc = get_asset_by_name(
self.active_project(),
asset_name=selected_asset,
selected_asset,
fields=["_id"]
)
if not asset_doc:
@ -768,8 +768,8 @@ class SwitchAssetDialog(QtWidgets.QDialog):
project_name = self.active_project()
selected_asset = self._assets_box.get_valid_value()
if selected_asset:
asset_doc = get_asset(
project_name, asset_name=selected_asset, fields=["_id"]
asset_doc = get_asset_by_name(
project_name, selected_asset, fields=["_id"]
)
asset_ids = [asset_doc["_id"]]
else:
@ -832,8 +832,8 @@ class SwitchAssetDialog(QtWidgets.QDialog):
# [x] [x] [?]
if selected_asset and selected_subset:
asset_doc = get_asset(
project_name, asset_name=selected_asset, fields=["_id"]
asset_doc = get_asset_by_name(
project_name, selected_asset, fields=["_id"]
)
subset_doc = get_subset(
project_name,
@ -858,8 +858,8 @@ class SwitchAssetDialog(QtWidgets.QDialog):
# [x] [ ] [?]
# If asset only is selected
if selected_asset:
asset_doc = get_asset(
project_name, asset_name=selected_asset, fields=["_id"]
asset_doc = get_asset_by_name(
project_name, selected_asset, fields=["_id"]
)
if not asset_doc:
return list()
@ -995,8 +995,8 @@ class SwitchAssetDialog(QtWidgets.QDialog):
# [x] [ ] [?]
project_name = self.active_project()
asset_doc = get_asset(
project_name, asset_name=selected_asset, fields=["_id"]
asset_doc = get_asset_by_name(
project_name, selected_asset, fields=["_id"]
)
subset_docs = get_subsets(
project_name, asset_ids=[asset_doc["_id"]], fields=["name"]
@ -1043,8 +1043,8 @@ class SwitchAssetDialog(QtWidgets.QDialog):
# [x] [x] [ ]
project_name = self.active_project()
if selected_asset is not None and selected_subset is not None:
asset_doc = get_asset(
project_name, asset_name=selected_asset, fields=["_id"]
asset_doc = get_asset_by_name(
project_name, selected_asset, fields=["_id"]
)
subset_doc = get_subset(
project_name,
@ -1077,8 +1077,8 @@ class SwitchAssetDialog(QtWidgets.QDialog):
# [x] [ ] [ ]
if selected_asset is not None:
asset_doc = get_asset(
project_name, asset_name=selected_asset, fields=["_id"]
asset_doc = get_asset_by_name(
project_name, selected_asset, fields=["_id"]
)
subset_docs = list(get_subsets(
project_name,
@ -1189,7 +1189,7 @@ class SwitchAssetDialog(QtWidgets.QDialog):
project_name = self.active_project()
if selected_asset:
asset_doc = get_asset(project_name, asset_name=selected_asset)
asset_doc = get_asset_by_name(project_name, selected_asset)
asset_docs_by_id = {asset_doc["_id"]: asset_doc}
else:
asset_docs_by_id = self.content_assets

View file

@ -657,11 +657,9 @@ class SceneInventoryView(QtWidgets.QTreeView):
project_name = legacy_io.active_project()
# Get available versions for active representation
representation_id = ObjectId(active["representation"])
repre_doc = get_representation(
project_name,
representation_id=representation_id,
representation_id=active["representation"],
fields=["parent"]
)

View file

@ -6,7 +6,7 @@ import signal
from bson.objectid import ObjectId
from Qt import QtWidgets, QtCore, QtGui
from openpype.client import get_asset
from openpype.client import get_asset_by_id
from .widgets import (
AssetWidget, FamilyWidget, ComponentsWidget, ShadowWidget
@ -144,8 +144,8 @@ class Window(QtWidgets.QDialog):
if len(selected) == 1:
self.valid_parent = True
project_name = self.db.active_project()
asset = get_asset(
project_name, asset_id=selected[0], fields=["name"]
asset = get_asset_by_id(
project_name, selected[0], fields=["name"]
)
self.widget_family.change_asset(asset['name'])
else:

View file

@ -4,7 +4,7 @@ import qtawesome
from openpype.client import (
get_project,
get_asset,
get_asset_by_id,
)
from openpype.tools.utils import PlaceholderLineEdit
@ -251,9 +251,9 @@ class AssetWidget(QtWidgets.QWidget):
return output
project_name = self.dbcon.active_project()
parent = get_asset(
parent = get_asset_by_id(
project_name,
asset_id=parent_asset_id,
parent_asset_id,
fields=["name", "data.visualParent"]
)
output.append(parent['name'])
@ -362,8 +362,8 @@ class AssetWidget(QtWidgets.QWidget):
selected = self.get_selected_assets()
if len(selected) == 1:
project_name = self.dbcon.active_project()
asset = get_asset(
project_name, asset_id=selected[0], fields=["data.tasks"]
asset = get_asset_by_id(
project_name, selected[0], fields=["data.tasks"]
)
if asset:
tasks = asset.get('data', {}).get('tasks', [])

View file

@ -3,7 +3,7 @@ import re
from Qt import QtWidgets, QtCore
from openpype.client import (
get_asset,
get_asset_by_name,
get_subset,
get_subsets,
get_last_version_for_subset,
@ -188,8 +188,8 @@ class FamilyWidget(QtWidgets.QWidget):
if asset_name != self.NOT_SELECTED:
# Get the assets from the database which match with the name
project_name = self.dbcon.active_project()
asset_doc = get_asset(
project_name, asset_name=asset_name, fields=["_id"]
asset_doc = get_asset_by_name(
project_name, asset_name, fields=["_id"]
)
# Get plugin and family
@ -205,8 +205,8 @@ class FamilyWidget(QtWidgets.QWidget):
# Get the asset from the database which match with the name
project_name = self.dbcon.active_project()
asset_doc = get_asset(
project_name, asset_name=asset_name, fields=["_id"]
asset_doc = get_asset_by_name(
project_name, asset_name, fields=["_id"]
)
# Get plugin
plugin = item.data(PluginRole)
@ -310,8 +310,8 @@ class FamilyWidget(QtWidgets.QWidget):
asset_name != self.NOT_SELECTED and
subset_name.strip() != ''
):
asset_doc = get_asset(
project_name, asset_name=asset_name, fields=["_id"]
asset_doc = get_asset_by_name(
project_name, asset_name, fields=["_id"]
)
if asset_doc:

View file

@ -4,7 +4,7 @@ import click
import speedcopy
from openpype.client import get_project, get_asset
from openpype.client import get_project, get_asset_by_name
from openpype.lib import Terminal
from openpype.api import Anatomy
from openpype.pipeline import legacy_io
@ -94,7 +94,7 @@ class TextureCopy:
t.echo("!!! Project name [ {} ] not found.".format(project_name))
exit(1)
asset = get_asset(project_name, asset_name=asset_name)
asset = get_asset_by_name(project_name, asset_name)
if not asset:
t.echo("!!! Asset [ {} ] not found in project".format(asset_name))
exit(1)

View file

@ -8,7 +8,7 @@ import qtawesome
from openpype.client import (
get_project,
get_asset,
get_asset_by_name,
)
from openpype.style import (
get_default_entity_icon_color,
@ -434,8 +434,8 @@ class FamilyConfigCache:
database = getattr(self.dbcon, "database", None)
if database is None:
database = self.dbcon._database
asset_doc = get_asset(
project_name, asset_name=asset_name, fields=["data.tasks"]
asset_doc = get_asset_by_name(
project_name, asset_name, fields=["data.tasks"]
) or {}
tasks_info = asset_doc.get("data", {}).get("tasks") or {}
task_type = tasks_info.get(task_name, {}).get("type")

View file

@ -3,7 +3,7 @@ import qtawesome
from openpype.client import (
get_project,
get_asset,
get_asset_by_id,
)
from openpype.style import get_disabled_entity_icon_color
from openpype.tools.utils.lib import get_task_icon
@ -77,8 +77,8 @@ class TasksModel(QtGui.QStandardItemModel):
asset_doc = None
if self._context_is_valid():
project_name = self._get_current_project()
asset_doc = get_asset(
project_name, asset_id=asset_id, fields=["data.tasks"]
asset_doc = get_asset_by_id(
project_name, asset_id, fields=["data.tasks"]
)
self._set_asset(asset_doc)

View file

@ -5,7 +5,7 @@ import shutil
import Qt
from Qt import QtWidgets, QtCore
from openpype.client import get_asset
from openpype.client import get_asset_by_id
from openpype.tools.utils import PlaceholderLineEdit
from openpype.tools.utils.delegates import PrettyTimeDelegate
from openpype.lib import (
@ -386,7 +386,7 @@ class FilesWidget(QtWidgets.QWidget):
if self._asset_doc is None:
project_name = legacy_io.active_project()
self._asset_doc = get_asset(project_name, asset_id=self._asset_id)
self._asset_doc = get_asset_by_id(project_name, self._asset_id)
return self._asset_doc

View file

@ -7,7 +7,7 @@ from Qt import QtWidgets, QtCore
from openpype.client import (
get_project,
get_asset,
get_asset_by_name,
)
from openpype.lib import (
get_last_workfile_with_version,
@ -33,9 +33,9 @@ def build_workfile_data(session):
project_doc = get_project(
project_name, fields=["name", "data.code", "config.tasks"]
)
asset_doc = get_asset(
asset_doc = get_asset_by_name(
project_name,
asset_name=asset_name,
asset_name,
fields=["name", "data.tasks", "data.parents"]
)

View file

@ -2,7 +2,7 @@ import os
import datetime
from Qt import QtCore, QtWidgets
from openpype.client import get_asset
from openpype.client import get_asset_by_id, get_asset_by_name
from openpype import style
from openpype.lib import (
get_workfile_doc,
@ -302,7 +302,7 @@ class Window(QtWidgets.QMainWindow):
workdir, filename = os.path.split(filepath)
asset_id = self.assets_widget.get_selected_asset_id()
project_name = legacy_io.active_project()
asset_doc = get_asset(project_name, asset_id=asset_id)
asset_doc = get_asset_by_id(project_name, asset_id)
task_name = self.tasks_widget.get_selected_task_name()
create_workfile_doc(
asset_doc, task_name, filename, workdir, legacy_io
@ -328,7 +328,7 @@ class Window(QtWidgets.QMainWindow):
self._context_to_set, context = None, self._context_to_set
if "asset" in context:
asset_doc = get_asset(
asset_doc = get_asset_by_name(
self.project_name, context["asset"], fields=["_id"]
)