From d1db95d8cb5269e77692b3c283bb0b7dd1221c19 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 17 Dec 2025 11:16:03 +0100 Subject: [PATCH 1/4] fix conversion function name --- server/settings/conversion.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/settings/conversion.py b/server/settings/conversion.py index 9da765e366..952df7f970 100644 --- a/server/settings/conversion.py +++ b/server/settings/conversion.py @@ -7,7 +7,7 @@ from .publish_plugins import DEFAULT_PUBLISH_VALUES 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_6_5(overrides): product_name_profiles = ( overrides .get("tools", {}) @@ -204,7 +204,7 @@ def convert_settings_overrides( ) -> dict[str, Any]: _convert_imageio_configs_0_3_1(overrides) _convert_imageio_configs_0_4_5(overrides) - _convert_imageio_configs_1_6_5(overrides) + _convert_product_name_templates_1_6_5(overrides) _convert_publish_plugins(overrides) _convert_extract_thumbnail(overrides) return overrides From 67d9ec366c15eb0a8e1150455e71fb5b557261f4 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 17 Dec 2025 11:16:48 +0100 Subject: [PATCH 2/4] added product base types to product name template settings --- server/settings/conversion.py | 25 +++++++++++++++++++++++++ server/settings/tools.py | 4 ++++ 2 files changed, 29 insertions(+) diff --git a/server/settings/conversion.py b/server/settings/conversion.py index 952df7f970..8eb42d8e6b 100644 --- a/server/settings/conversion.py +++ b/server/settings/conversion.py @@ -7,6 +7,30 @@ from .publish_plugins import DEFAULT_PUBLISH_VALUES PRODUCT_NAME_REPL_REGEX = re.compile(r"[^<>{}\[\]a-zA-Z0-9_.]") +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 = ( overrides @@ -205,6 +229,7 @@ def convert_settings_overrides( _convert_imageio_configs_0_3_1(overrides) _convert_imageio_configs_0_4_5(overrides) _convert_product_name_templates_1_6_5(overrides) + _convert_product_name_templates_1_7_0(overrides) _convert_publish_plugins(overrides) _convert_extract_thumbnail(overrides) return overrides diff --git a/server/settings/tools.py b/server/settings/tools.py index da3b4ebff8..02dfc79e46 100644 --- a/server/settings/tools.py +++ b/server/settings/tools.py @@ -24,6 +24,10 @@ class ProductTypeSmartSelectModel(BaseSettingsModel): class ProductNameProfile(BaseSettingsModel): _layout = "expanded" + product_base_types: list[str] = SettingsField( + default_factory=list, + title="Product base types", + ) product_types: list[str] = SettingsField( default_factory=list, title="Product types", From ad36a449fd874d2972d6817a487333d82dd8f88a Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 17 Dec 2025 11:17:10 +0100 Subject: [PATCH 3/4] fix filter criteria for backwards compatibility --- client/ayon_core/pipeline/create/product_name.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ayon_core/pipeline/create/product_name.py b/client/ayon_core/pipeline/create/product_name.py index d32de54774..9a50e18afd 100644 --- a/client/ayon_core/pipeline/create/product_name.py +++ b/client/ayon_core/pipeline/create/product_name.py @@ -60,11 +60,11 @@ def get_product_name_template( tools_settings = project_settings["core"]["tools"] profiles = tools_settings["creator"]["product_name_profiles"] filtering_criteria = { + "product_base_types": product_base_type or product_type, "product_types": product_type, "host_names": host_name, "task_names": task_name, "task_types": task_type, - "product_base_types": product_base_type, } matching_profile = filter_profiles(profiles, filtering_criteria) template = None From 6a3f28cfb828c34db15351cd4da6fa941afd46c3 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Wed, 17 Dec 2025 11:19:15 +0100 Subject: [PATCH 4/4] change defaults --- server/settings/tools.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/server/settings/tools.py b/server/settings/tools.py index 02dfc79e46..60b5a67f64 100644 --- a/server/settings/tools.py +++ b/server/settings/tools.py @@ -447,6 +447,7 @@ DEFAULT_TOOLS_VALUES = { ], "product_name_profiles": [ { + "product_base_types": [], "product_types": [], "host_names": [], "task_types": [], @@ -454,28 +455,31 @@ DEFAULT_TOOLS_VALUES = { "template": "{product[type]}{variant}" }, { - "product_types": [ + "product_base_types": [ "workfile" ], + "product_types": [], "host_names": [], "task_types": [], "task_names": [], "template": "{product[type]}{Task[name]}" }, { - "product_types": [ + "product_base_types": [ "render" ], + "product_types": [], "host_names": [], "task_types": [], "task_names": [], "template": "{product[type]}{Task[name]}{Variant}<_{Aov}>" }, { - "product_types": [ + "product_base_types": [ "renderLayer", "renderPass" ], + "product_types": [], "host_names": [ "tvpaint" ], @@ -486,10 +490,11 @@ DEFAULT_TOOLS_VALUES = { ) }, { - "product_types": [ + "product_base_types": [ "review", "workfile" ], + "product_types": [], "host_names": [ "aftereffects", "tvpaint" @@ -499,7 +504,8 @@ DEFAULT_TOOLS_VALUES = { "template": "{product[type]}{Task[name]}" }, { - "product_types": ["render"], + "product_base_types": ["render"], + "product_types": [], "host_names": [ "aftereffects" ], @@ -508,9 +514,10 @@ DEFAULT_TOOLS_VALUES = { "template": "{product[type]}{Task[name]}{Composition}{Variant}" }, { - "product_types": [ + "product_base_types": [ "staticMesh" ], + "product_types": [], "host_names": [ "maya" ], @@ -519,9 +526,10 @@ DEFAULT_TOOLS_VALUES = { "template": "S_{folder[name]}{variant}" }, { - "product_types": [ + "product_base_types": [ "skeletalMesh" ], + "product_types": [], "host_names": [ "maya" ], @@ -530,9 +538,10 @@ DEFAULT_TOOLS_VALUES = { "template": "SK_{folder[name]}{variant}" }, { - "product_types": [ + "product_base_types": [ "hda" ], + "product_types": [], "host_names": [ "houdini" ], @@ -541,9 +550,10 @@ DEFAULT_TOOLS_VALUES = { "template": "{folder[name]}_{variant}" }, { - "product_types": [ + "product_base_types": [ "textureSet" ], + "product_types": [], "host_names": [ "substancedesigner" ],