Merge pull request #1613 from ynput/enhancement/product-name-template-settings

Settings: Product name template profile filters
This commit is contained in:
Jakub Trllo 2025-12-18 12:23:45 +01:00 committed by GitHub
commit 9e067348bd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 51 additions and 12 deletions

View file

@ -60,11 +60,11 @@ def get_product_name_template(
tools_settings = project_settings["core"]["tools"] tools_settings = project_settings["core"]["tools"]
profiles = tools_settings["creator"]["product_name_profiles"] profiles = tools_settings["creator"]["product_name_profiles"]
filtering_criteria = { filtering_criteria = {
"product_base_types": product_base_type or product_type,
"product_types": product_type, "product_types": product_type,
"host_names": host_name, "host_names": host_name,
"task_names": task_name, "task_names": task_name,
"task_types": task_type, "task_types": task_type,
"product_base_types": product_base_type,
} }
matching_profile = filter_profiles(profiles, filtering_criteria) matching_profile = filter_profiles(profiles, filtering_criteria)
template = None template = None

View file

@ -7,7 +7,31 @@ from .publish_plugins import DEFAULT_PUBLISH_VALUES
PRODUCT_NAME_REPL_REGEX = re.compile(r"[^<>{}\[\]a-zA-Z0-9_.]") PRODUCT_NAME_REPL_REGEX = re.compile(r"[^<>{}\[\]a-zA-Z0-9_.]")
def _convert_imageio_configs_1_6_5(overrides): def _convert_product_name_templates_1_7_0(overrides):
product_name_profiles = (
overrides
.get("tools", {})
.get("creator", {})
.get("product_name_profiles")
)
if (
not product_name_profiles
or not isinstance(product_name_profiles, list)
):
return
# Already converted
item = product_name_profiles[0]
if "product_base_types" in item or "product_types" not in item:
return
# Move product base types to product types
for item in product_name_profiles:
item["product_base_types"] = item["product_types"]
item["product_types"] = []
def _convert_product_name_templates_1_6_5(overrides):
product_name_profiles = ( product_name_profiles = (
overrides overrides
.get("tools", {}) .get("tools", {})
@ -204,7 +228,8 @@ def convert_settings_overrides(
) -> dict[str, Any]: ) -> dict[str, Any]:
_convert_imageio_configs_0_3_1(overrides) _convert_imageio_configs_0_3_1(overrides)
_convert_imageio_configs_0_4_5(overrides) _convert_imageio_configs_0_4_5(overrides)
_convert_imageio_configs_1_6_5(overrides) _convert_product_name_templates_1_6_5(overrides)
_convert_product_name_templates_1_7_0(overrides)
_convert_publish_plugins(overrides) _convert_publish_plugins(overrides)
_convert_extract_thumbnail(overrides) _convert_extract_thumbnail(overrides)
return overrides return overrides

View file

@ -24,6 +24,10 @@ class ProductTypeSmartSelectModel(BaseSettingsModel):
class ProductNameProfile(BaseSettingsModel): class ProductNameProfile(BaseSettingsModel):
_layout = "expanded" _layout = "expanded"
product_base_types: list[str] = SettingsField(
default_factory=list,
title="Product base types",
)
product_types: list[str] = SettingsField( product_types: list[str] = SettingsField(
default_factory=list, default_factory=list,
title="Product types", title="Product types",
@ -468,6 +472,7 @@ DEFAULT_TOOLS_VALUES = {
], ],
"product_name_profiles": [ "product_name_profiles": [
{ {
"product_base_types": [],
"product_types": [], "product_types": [],
"host_names": [], "host_names": [],
"task_types": [], "task_types": [],
@ -475,28 +480,31 @@ DEFAULT_TOOLS_VALUES = {
"template": "{product[type]}{variant}" "template": "{product[type]}{variant}"
}, },
{ {
"product_types": [ "product_base_types": [
"workfile" "workfile"
], ],
"product_types": [],
"host_names": [], "host_names": [],
"task_types": [], "task_types": [],
"task_names": [], "task_names": [],
"template": "{product[type]}{Task[name]}" "template": "{product[type]}{Task[name]}"
}, },
{ {
"product_types": [ "product_base_types": [
"render" "render"
], ],
"product_types": [],
"host_names": [], "host_names": [],
"task_types": [], "task_types": [],
"task_names": [], "task_names": [],
"template": "{product[type]}{Task[name]}{Variant}<_{Aov}>" "template": "{product[type]}{Task[name]}{Variant}<_{Aov}>"
}, },
{ {
"product_types": [ "product_base_types": [
"renderLayer", "renderLayer",
"renderPass" "renderPass"
], ],
"product_types": [],
"host_names": [ "host_names": [
"tvpaint" "tvpaint"
], ],
@ -507,10 +515,11 @@ DEFAULT_TOOLS_VALUES = {
) )
}, },
{ {
"product_types": [ "product_base_types": [
"review", "review",
"workfile" "workfile"
], ],
"product_types": [],
"host_names": [ "host_names": [
"aftereffects", "aftereffects",
"tvpaint" "tvpaint"
@ -520,7 +529,8 @@ DEFAULT_TOOLS_VALUES = {
"template": "{product[type]}{Task[name]}" "template": "{product[type]}{Task[name]}"
}, },
{ {
"product_types": ["render"], "product_base_types": ["render"],
"product_types": [],
"host_names": [ "host_names": [
"aftereffects" "aftereffects"
], ],
@ -529,9 +539,10 @@ DEFAULT_TOOLS_VALUES = {
"template": "{product[type]}{Task[name]}{Composition}{Variant}" "template": "{product[type]}{Task[name]}{Composition}{Variant}"
}, },
{ {
"product_types": [ "product_base_types": [
"staticMesh" "staticMesh"
], ],
"product_types": [],
"host_names": [ "host_names": [
"maya" "maya"
], ],
@ -540,9 +551,10 @@ DEFAULT_TOOLS_VALUES = {
"template": "S_{folder[name]}{variant}" "template": "S_{folder[name]}{variant}"
}, },
{ {
"product_types": [ "product_base_types": [
"skeletalMesh" "skeletalMesh"
], ],
"product_types": [],
"host_names": [ "host_names": [
"maya" "maya"
], ],
@ -551,9 +563,10 @@ DEFAULT_TOOLS_VALUES = {
"template": "SK_{folder[name]}{variant}" "template": "SK_{folder[name]}{variant}"
}, },
{ {
"product_types": [ "product_base_types": [
"hda" "hda"
], ],
"product_types": [],
"host_names": [ "host_names": [
"houdini" "houdini"
], ],
@ -562,9 +575,10 @@ DEFAULT_TOOLS_VALUES = {
"template": "{folder[name]}_{variant}" "template": "{folder[name]}_{variant}"
}, },
{ {
"product_types": [ "product_base_types": [
"textureSet" "textureSet"
], ],
"product_types": [],
"host_names": [ "host_names": [
"substancedesigner" "substancedesigner"
], ],