mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
Merge fd9b444b5f into 1daba76e3a
This commit is contained in:
commit
2b6a785217
3 changed files with 89 additions and 7 deletions
|
|
@ -9,6 +9,9 @@ import qtawesome
|
|||
from ayon_core.style import get_default_entity_icon_color
|
||||
from ayon_core.tools.utils import get_qt_icon
|
||||
from ayon_core.tools.utils.lib import format_version
|
||||
from ayon_core.pipeline import template_data
|
||||
from ayon_core.lib import filter_profiles
|
||||
from ayon_core.settings import get_project_settings
|
||||
|
||||
ITEM_ID_ROLE = QtCore.Qt.UserRole + 1
|
||||
NAME_COLOR_ROLE = QtCore.Qt.UserRole + 2
|
||||
|
|
@ -128,13 +131,55 @@ class InventoryModel(QtGui.QStandardItemModel):
|
|||
def outdated(self, item):
|
||||
return item.get("isOutdated", True)
|
||||
|
||||
def _get_repre_info_template_data(self, repre_info):
|
||||
fake_folder_entity = {
|
||||
"name": repre_info.folder_name,
|
||||
"id": repre_info.folder_id,
|
||||
"folderType": repre_info.folder_type,
|
||||
"path": repre_info.folder_path
|
||||
}
|
||||
|
||||
folder_data = template_data.get_folder_template_data(
|
||||
fake_folder_entity,
|
||||
self._controller.get_current_project_name()
|
||||
)
|
||||
|
||||
template_data = {
|
||||
"product": {
|
||||
"name": repre_info.product_name,
|
||||
"type": repre_info.product_type,
|
||||
},
|
||||
"representation": {
|
||||
"name": repre_info.representation_name,
|
||||
}
|
||||
}
|
||||
template_data .update(folder_data)
|
||||
return template_data
|
||||
|
||||
def refresh(self, selected=None):
|
||||
"""Refresh the model"""
|
||||
# for debugging or testing, injecting items from outside
|
||||
container_items = self._controller.get_container_items()
|
||||
|
||||
self._clear_items()
|
||||
# fetch the label settings
|
||||
|
||||
settings = get_project_settings(
|
||||
self._controller.get_current_project_name())
|
||||
|
||||
selected_profile = filter_profiles(
|
||||
settings["core"]["tools"]["inventory"]["profiles"],
|
||||
{
|
||||
"host_name": self._controller.get_host().name,
|
||||
"task_name": self._controller.get_current_context()["task_name"]
|
||||
},
|
||||
keys_order=["host_name", "task_name"])
|
||||
group_name_template = "{folder[name]}_{product[name]}: ({representation[name]})"
|
||||
if selected_profile is not None:
|
||||
group_name_template = selected_profile["inventory_name_format"]
|
||||
|
||||
|
||||
items_by_repre_id = {}
|
||||
project_names = set()
|
||||
repre_ids_by_project = collections.defaultdict(set)
|
||||
version_items_by_project = collections.defaultdict(dict)
|
||||
|
|
@ -248,11 +293,9 @@ class InventoryModel(QtGui.QStandardItemModel):
|
|||
status_name = None
|
||||
|
||||
else:
|
||||
group_name = "{}_{}: ({})".format(
|
||||
repre_info.folder_path.rsplit("/")[-1],
|
||||
repre_info.product_name,
|
||||
repre_info.representation_name
|
||||
)
|
||||
template_data = self._get_repre_info_template_data(repre_info)
|
||||
group_name = group_name_template.format(**template_data)
|
||||
|
||||
item_icon = valid_item_icon
|
||||
|
||||
version_items = (
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ def representations_parent_ids_qraphql_query():
|
|||
folder_field = product_field.add_field("folder")
|
||||
folder_field.add_field("id")
|
||||
folder_field.add_field("path")
|
||||
folder_field.add_field("folderType")
|
||||
return query
|
||||
|
||||
|
||||
|
|
@ -126,6 +127,8 @@ class RepresentationInfo:
|
|||
self,
|
||||
folder_id,
|
||||
folder_path,
|
||||
folder_name,
|
||||
folder_type,
|
||||
product_id,
|
||||
product_name,
|
||||
product_type,
|
||||
|
|
@ -136,6 +139,8 @@ class RepresentationInfo:
|
|||
):
|
||||
self.folder_id = folder_id
|
||||
self.folder_path = folder_path
|
||||
self.folder_name = folder_name
|
||||
self.folder_type = folder_type
|
||||
self.product_id = product_id
|
||||
self.product_name = product_name
|
||||
self.product_type = product_type
|
||||
|
|
@ -268,6 +273,8 @@ class ContainersModel:
|
|||
kwargs = {
|
||||
"folder_id": None,
|
||||
"folder_path": None,
|
||||
"folder_name": None,
|
||||
"folder_type": None,
|
||||
"product_id": None,
|
||||
"product_name": None,
|
||||
"product_type": None,
|
||||
|
|
@ -283,6 +290,8 @@ class ContainersModel:
|
|||
if folder:
|
||||
kwargs["folder_id"] = folder["id"]
|
||||
kwargs["folder_path"] = folder["path"]
|
||||
kwargs["folder_name"] = folder["path"].split("/")[-1]
|
||||
kwargs["folder_type"] = folder["folderType"]
|
||||
if product:
|
||||
product_type = product["productType"]
|
||||
product_base_type = product.get("productBaseType")
|
||||
|
|
|
|||
|
|
@ -379,6 +379,29 @@ class PublishToolModel(BaseSettingsModel):
|
|||
)
|
||||
|
||||
|
||||
class InventoryTemplateNameProfile(BaseSettingsModel):
|
||||
_layout = "expanded"
|
||||
host_names: list[str] = SettingsField(
|
||||
title="Host names",
|
||||
default_factory=list
|
||||
)
|
||||
task_name: list[str] = SettingsField(
|
||||
title="Task names",
|
||||
default_factory=list
|
||||
)
|
||||
template: str = SettingsField(
|
||||
title="Template",
|
||||
default_factory=str
|
||||
)
|
||||
|
||||
|
||||
class InventoryToolModel(BaseSettingsModel):
|
||||
profiles: list[InventoryTemplateNameProfile] = SettingsField(
|
||||
default_factory=list,
|
||||
title="Inventory label templates"
|
||||
)
|
||||
|
||||
|
||||
class GlobalToolsModel(BaseSettingsModel):
|
||||
ayon_menu: AYONMenuModel = SettingsField(
|
||||
default_factory=AYONMenuModel,
|
||||
|
|
@ -400,6 +423,10 @@ class GlobalToolsModel(BaseSettingsModel):
|
|||
default_factory=PublishToolModel,
|
||||
title="Publish"
|
||||
)
|
||||
inventory: InventoryToolModel = SettingsField(
|
||||
default_factory=InventoryToolModel,
|
||||
title="Inventory"
|
||||
)
|
||||
|
||||
|
||||
DEFAULT_TOOLS_VALUES = {
|
||||
|
|
@ -690,7 +717,10 @@ DEFAULT_TOOLS_VALUES = {
|
|||
"task_names": [],
|
||||
"template_name": "simpleUnrealTextureHero"
|
||||
}
|
||||
],
|
||||
"comment_minimum_required_chars": 0,
|
||||
]
|
||||
},
|
||||
"comment_minimum_required_chars": 0,
|
||||
"inventory": {
|
||||
"profiles": []
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue