diff --git a/client/ayon_core/plugins/publish/collect_frames_fix.py b/client/ayon_core/plugins/publish/collect_frames_fix.py
index 0f7d5b692a..f2e9703dc2 100644
--- a/client/ayon_core/plugins/publish/collect_frames_fix.py
+++ b/client/ayon_core/plugins/publish/collect_frames_fix.py
@@ -1,6 +1,8 @@
import pyblish.api
import ayon_api
+from ayon_core.lib import filter_profiles
+from ayon_core.pipeline import get_current_host_name
from ayon_core.lib.attribute_definitions import (
TextDef,
BoolDef
@@ -21,10 +23,23 @@ class CollectFramesFixDef(
order = pyblish.api.CollectorOrder + 0.495
label = "Collect Frames to Fix"
targets = ["local"]
- hosts = ["nuke"]
- families = ["render", "prerender"]
- rewrite_version_enable = False
+ @classmethod
+ def apply_settings(cls, project_settings):
+
+ profiles = project_settings["core"]["publish"][cls.__name__]["profiles"]
+ host_name = get_current_host_name()
+ filtering_criteria = {
+ "hosts": host_name
+ }
+ profile = filter_profiles(
+ profiles,
+ filtering_criteria,
+ logger=cls.log
+ )
+
+ cls.families = profile["families"]
+ cls.rewrite_version_enable = profile["rewrite_version_enable"]
def process(self, instance):
attribute_values = self.get_attr_values_from_data(instance.data)
@@ -65,7 +80,7 @@ class CollectFramesFixDef(
product_type = repre_context.get("product", {}).get("type")
if not product_type:
product_type = repre_context.get("family")
- if product_type not in self.families:
+ if "*" not in self.families and product_type not in self.families:
continue
for file_info in repre.get("files"):
diff --git a/server/settings/publish_plugins.py b/server/settings/publish_plugins.py
index a5ea7bd762..3f4ce39b5b 100644
--- a/server/settings/publish_plugins.py
+++ b/server/settings/publish_plugins.py
@@ -50,14 +50,28 @@ class CollectCommentPIModel(BaseSettingsModel):
enabled: bool = SettingsField(True)
families: list[str] = SettingsField(default_factory=list, title="Families")
+class CollectFramesFixDefProfilesModel(BaseSettingsModel):
-class CollectFramesFixDefModel(BaseSettingsModel):
- enabled: bool = SettingsField(True)
+ hosts: list[str] = SettingsField(
+ default_factory=list,
+ title="Host names"
+ )
+ families: list[str] = SettingsField(
+ default_factory=list,
+ title="Families"
+ )
rewrite_version_enable: bool = SettingsField(
True,
title="Show 'Rewrite latest version' toggle"
)
-
+
+
+class CollectFramesFixDefModel(BaseSettingsModel):
+ enabled: bool = SettingsField(True)
+ profiles: list[CollectFramesFixDefProfilesModel] = SettingsField(
+ default_factory=list, title="profiles"
+ )
+
class ContributionLayersModel(BaseSettingsModel):
_layout = "compact"
@@ -360,7 +374,7 @@ class ExtractReviewFFmpegModel(BaseSettingsModel):
def extract_review_filter_enum():
return [
{
- "value": "everytime",
+ "value": "everytime", # codespell:ignore everytime
"label": "Always"
},
{
@@ -382,7 +396,7 @@ class ExtractReviewFilterModel(BaseSettingsModel):
default_factory=list, title="Custom Tags"
)
single_frame_filter: str = SettingsField(
- "everytime",
+ "everytime", # codespell:ignore everytime
description=(
"Use output always / only if input is 1 frame"
" image / only if has 2+ frames or is video"
@@ -780,7 +794,7 @@ class IntegrateHeroVersionModel(BaseSettingsModel):
class CleanUpModel(BaseSettingsModel):
_isGroup = True
- paterns: list[str] = SettingsField(
+ paterns: list[str] = SettingsField( # codespell:ignore paterns
default_factory=list,
title="Patterns (regex)"
)
@@ -911,7 +925,18 @@ DEFAULT_PUBLISH_VALUES = {
},
"CollectFramesFixDef": {
"enabled": True,
- "rewrite_version_enable": True
+ "profiles": [
+ {
+ "hosts": ["nuke"],
+ "families": ["render", "prerender"],
+ "rewrite_version_enable": False
+ },
+ {
+ "hosts": ["houdini"],
+ "families": ["*"],
+ "rewrite_version_enable": False
+ }
+ ]
},
"CollectUSDLayerContributions": {
"enabled": True,
@@ -1200,7 +1225,7 @@ DEFAULT_PUBLISH_VALUES = {
"use_hardlinks": False
},
"CleanUp": {
- "paterns": [],
+ "paterns": [], # codespell:ignore paterns
"remove_temp_renders": False
},
"CleanUpFarm": {