mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
add ayon settings support for validate loaded plugins
This commit is contained in:
parent
d15dfaaf84
commit
d410899714
3 changed files with 30 additions and 25 deletions
|
|
@ -63,12 +63,12 @@ class ValidateLoadedPlugin(OptionalPyblishPluginMixin,
|
|||
|
||||
if not has_match:
|
||||
continue
|
||||
|
||||
plugins = [plugin for plugin in
|
||||
required_plugins[family]["plugins"]]
|
||||
plugins = [plugin for plugin in required_plugins[family]["plugins"]]
|
||||
for plugin in plugins:
|
||||
if not plugin:
|
||||
return
|
||||
# make sure the validation applied for
|
||||
# plugins with different Max version
|
||||
plugin_name = plugin.format(**os.environ).lower()
|
||||
plugin_index = available_plugins.get(plugin_name)
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ class ValidateLoadedPlugin(OptionalPyblishPluginMixin,
|
|||
instance_families.update(instance.data.get("families", []))
|
||||
cls.log.debug("Checking plug-in validation "
|
||||
f"for instance families: {instance_families}")
|
||||
for family in required_plugins.keys():
|
||||
for family in required_plugins:
|
||||
match_families = {fam.strip() for fam in
|
||||
family.split(",") if fam.strip()}
|
||||
cls.log.debug(f"Plug-in family requirements: {match_families}")
|
||||
|
|
@ -120,8 +120,7 @@ class ValidateLoadedPlugin(OptionalPyblishPluginMixin,
|
|||
if not has_match:
|
||||
continue
|
||||
|
||||
plugins = [plugin for plugin in
|
||||
required_plugins[family]["plugins"]]
|
||||
plugins = [plugin for plugin in family["plugins"]]
|
||||
for plugin in plugins:
|
||||
if not plugin:
|
||||
return
|
||||
|
|
|
|||
|
|
@ -650,19 +650,14 @@ def _convert_3dsmax_project_settings(ayon_settings, output):
|
|||
ayon_publish["ValidateAttributes"]["attributes"] = attributes
|
||||
|
||||
if "ValidateLoadedPlugin" in ayon_publish:
|
||||
family_plugin_mapping = (
|
||||
ayon_publish["ValidateLoadedPlugin"]["family_plugins_mapping"]
|
||||
)
|
||||
for item in family_plugin_mapping:
|
||||
if "product_types" in item:
|
||||
item["families"] = item.pop("product_types")
|
||||
new_family_plugin_mapping = {
|
||||
item["families"]: item["plugins"]
|
||||
for item in family_plugin_mapping
|
||||
}
|
||||
ayon_publish["ValidateLoadedPlugin"]["family_plugins_mapping"] = (
|
||||
new_family_plugin_mapping
|
||||
new_plugin_mapping = {}
|
||||
loaded_plugin = (
|
||||
ayon_publish["ValidateLoadedPlugin"]
|
||||
)
|
||||
for item in loaded_plugin["family_plugins_mapping"]:
|
||||
name = item.pop("name")
|
||||
new_plugin_mapping[name] = item
|
||||
loaded_plugin["family_plugins_mapping"] = new_plugin_mapping
|
||||
|
||||
output["max"] = ayon_max
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import json
|
||||
from pydantic import Field, validator
|
||||
|
||||
from ayon_server.settings import BaseSettingsModel
|
||||
from ayon_server.settings import BaseSettingsModel, ensure_unique_names
|
||||
from ayon_server.exceptions import BadRequestException
|
||||
|
||||
|
||||
|
|
@ -27,20 +27,31 @@ class ValidateAttributesModel(BaseSettingsModel):
|
|||
return value
|
||||
|
||||
|
||||
class FamilyPluginsMappingModel(BaseSettingsModel):
|
||||
class FamilyMappingItemModel(BaseSettingsModel):
|
||||
_layout = "compact"
|
||||
product_types: str = Field(title="Product Types")
|
||||
name: str = Field("", title="Product type")
|
||||
plugins: list[str] = Field(
|
||||
default_factory=list,title="Plugins")
|
||||
default_factory=list,
|
||||
title="Plugins"
|
||||
)
|
||||
|
||||
|
||||
class ValidateLoadedPluginModel(BaseSettingsModel):
|
||||
enabled: bool = Field(title="ValidateLoadedPlugin")
|
||||
enabled: bool = Field(title="Enabled")
|
||||
optional: bool = Field(title="Optional")
|
||||
family_plugins_mapping: list[FamilyPluginsMappingModel] = Field(
|
||||
default_factory=list, title="Family Plugins Mapping"
|
||||
family_plugins_mapping: list[FamilyMappingItemModel] = (
|
||||
Field(
|
||||
default_factory=list,
|
||||
title="Family Plugins Mapping"
|
||||
)
|
||||
)
|
||||
|
||||
# This is to validate unique names (like in dict)
|
||||
@validator("family_plugins_mapping")
|
||||
def validate_unique_outputs(cls, value):
|
||||
ensure_unique_names(value)
|
||||
return value
|
||||
|
||||
|
||||
class BasicValidateModel(BaseSettingsModel):
|
||||
enabled: bool = Field(title="Enabled")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue