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 diff --git a/server/settings/conversion.py b/server/settings/conversion.py index 9da765e366..8eb42d8e6b 100644 --- a/server/settings/conversion.py +++ b/server/settings/conversion.py @@ -7,7 +7,31 @@ 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_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 .get("tools", {}) @@ -204,7 +228,8 @@ 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_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 9b16ca5d94..19a1ff01be 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", @@ -468,6 +472,7 @@ DEFAULT_TOOLS_VALUES = { ], "product_name_profiles": [ { + "product_base_types": [], "product_types": [], "host_names": [], "task_types": [], @@ -475,28 +480,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" ], @@ -507,10 +515,11 @@ DEFAULT_TOOLS_VALUES = { ) }, { - "product_types": [ + "product_base_types": [ "review", "workfile" ], + "product_types": [], "host_names": [ "aftereffects", "tvpaint" @@ -520,7 +529,8 @@ DEFAULT_TOOLS_VALUES = { "template": "{product[type]}{Task[name]}" }, { - "product_types": ["render"], + "product_base_types": ["render"], + "product_types": [], "host_names": [ "aftereffects" ], @@ -529,9 +539,10 @@ DEFAULT_TOOLS_VALUES = { "template": "{product[type]}{Task[name]}{Composition}{Variant}" }, { - "product_types": [ + "product_base_types": [ "staticMesh" ], + "product_types": [], "host_names": [ "maya" ], @@ -540,9 +551,10 @@ DEFAULT_TOOLS_VALUES = { "template": "S_{folder[name]}{variant}" }, { - "product_types": [ + "product_base_types": [ "skeletalMesh" ], + "product_types": [], "host_names": [ "maya" ], @@ -551,9 +563,10 @@ DEFAULT_TOOLS_VALUES = { "template": "SK_{folder[name]}{variant}" }, { - "product_types": [ + "product_base_types": [ "hda" ], + "product_types": [], "host_names": [ "houdini" ], @@ -562,9 +575,10 @@ DEFAULT_TOOLS_VALUES = { "template": "{folder[name]}_{variant}" }, { - "product_types": [ + "product_base_types": [ "textureSet" ], + "product_types": [], "host_names": [ "substancedesigner" ],