mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
allow settings to dictate item names in the inventory
This commit is contained in:
parent
9b7de988c2
commit
bdb2017009
2 changed files with 88 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
|
||||
|
|
@ -127,13 +130,57 @@ class InventoryModel(QtGui.QStandardItemModel):
|
|||
def outdated(self, item):
|
||||
return item.get("isOutdated", True)
|
||||
|
||||
def generate_group_formatting_data(self, repre_info):
|
||||
hierarchy_parts = repre_info.folder_path.split("/")
|
||||
hierarchy_parts.pop(0)
|
||||
hierarchy_parts.pop(-1)
|
||||
|
||||
folder = {
|
||||
"name": repre_info.folder_name,
|
||||
"id": repre_info.folder_id,
|
||||
"folderType": repre_info.folder_type,
|
||||
"path": repre_info.folder_type
|
||||
}
|
||||
extra_folder_keys = template_data.construct_extra_folder_template_keys(
|
||||
self._controller.get_current_project_name(),
|
||||
folder,
|
||||
hierarchy_parts
|
||||
)
|
||||
|
||||
formatting_data = {
|
||||
"folder": {
|
||||
"name": repre_info.folder_name,
|
||||
**extra_folder_keys
|
||||
},
|
||||
"product": repre_info.product_name,
|
||||
"productType": repre_info.product_type,
|
||||
"representation": repre_info.representation_name
|
||||
}
|
||||
return formatting_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())
|
||||
|
||||
profiles = (settings["core"]["tools"]["inventory"]["profiles"])
|
||||
|
||||
selected_profile = filter_profiles(
|
||||
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 = 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)
|
||||
|
|
@ -250,11 +297,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
|
||||
)
|
||||
fmt_data = self.generate_group_formatting_data(repre_info)
|
||||
group_name = group_name_template.format(**fmt_data)
|
||||
|
||||
item_icon = valid_item_icon
|
||||
|
||||
version_items = (
|
||||
|
|
|
|||
|
|
@ -368,6 +368,28 @@ class PublishToolModel(BaseSettingsModel):
|
|||
)
|
||||
|
||||
|
||||
class InventoryTemplateNameProfile(BaseSettingsModel):
|
||||
_layout = "expanded"
|
||||
host_name: list[str] = SettingsField(
|
||||
title="Host name",
|
||||
default_factory=list
|
||||
)
|
||||
task_name: list[str] = SettingsField(
|
||||
title="Current task",
|
||||
default_factory=list
|
||||
)
|
||||
inventory_name_format: str = SettingsField(
|
||||
title="Format",
|
||||
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,
|
||||
|
|
@ -389,6 +411,10 @@ class GlobalToolsModel(BaseSettingsModel):
|
|||
default_factory=PublishToolModel,
|
||||
title="Publish"
|
||||
)
|
||||
inventory: InventoryToolModel = SettingsField(
|
||||
default_factory=InventoryToolModel,
|
||||
title="Inventory"
|
||||
)
|
||||
|
||||
|
||||
DEFAULT_TOOLS_VALUES = {
|
||||
|
|
@ -679,7 +705,17 @@ DEFAULT_TOOLS_VALUES = {
|
|||
"task_names": [],
|
||||
"template_name": "simpleUnrealTextureHero"
|
||||
}
|
||||
],
|
||||
"comment_minimum_required_chars": 0,
|
||||
]
|
||||
},
|
||||
"comment_minimum_required_chars": 0,
|
||||
"inventory": {
|
||||
"profiles": [
|
||||
{
|
||||
"host_name": [],
|
||||
"task_name": [],
|
||||
"inventory_name_format": "{folder[name]}_{product}: ({representation})",
|
||||
},
|
||||
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue