mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-02 00:44:52 +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:
|
if not has_match:
|
||||||
continue
|
continue
|
||||||
|
plugins = [plugin for plugin in required_plugins[family]["plugins"]]
|
||||||
plugins = [plugin for plugin in
|
|
||||||
required_plugins[family]["plugins"]]
|
|
||||||
for plugin in plugins:
|
for plugin in plugins:
|
||||||
if not plugin:
|
if not plugin:
|
||||||
return
|
return
|
||||||
|
# make sure the validation applied for
|
||||||
|
# plugins with different Max version
|
||||||
plugin_name = plugin.format(**os.environ).lower()
|
plugin_name = plugin.format(**os.environ).lower()
|
||||||
plugin_index = available_plugins.get(plugin_name)
|
plugin_index = available_plugins.get(plugin_name)
|
||||||
|
|
||||||
|
|
@ -110,7 +110,7 @@ class ValidateLoadedPlugin(OptionalPyblishPluginMixin,
|
||||||
instance_families.update(instance.data.get("families", []))
|
instance_families.update(instance.data.get("families", []))
|
||||||
cls.log.debug("Checking plug-in validation "
|
cls.log.debug("Checking plug-in validation "
|
||||||
f"for instance families: {instance_families}")
|
f"for instance families: {instance_families}")
|
||||||
for family in required_plugins.keys():
|
for family in required_plugins:
|
||||||
match_families = {fam.strip() for fam in
|
match_families = {fam.strip() for fam in
|
||||||
family.split(",") if fam.strip()}
|
family.split(",") if fam.strip()}
|
||||||
cls.log.debug(f"Plug-in family requirements: {match_families}")
|
cls.log.debug(f"Plug-in family requirements: {match_families}")
|
||||||
|
|
@ -120,8 +120,7 @@ class ValidateLoadedPlugin(OptionalPyblishPluginMixin,
|
||||||
if not has_match:
|
if not has_match:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
plugins = [plugin for plugin in
|
plugins = [plugin for plugin in family["plugins"]]
|
||||||
required_plugins[family]["plugins"]]
|
|
||||||
for plugin in plugins:
|
for plugin in plugins:
|
||||||
if not plugin:
|
if not plugin:
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -650,19 +650,14 @@ def _convert_3dsmax_project_settings(ayon_settings, output):
|
||||||
ayon_publish["ValidateAttributes"]["attributes"] = attributes
|
ayon_publish["ValidateAttributes"]["attributes"] = attributes
|
||||||
|
|
||||||
if "ValidateLoadedPlugin" in ayon_publish:
|
if "ValidateLoadedPlugin" in ayon_publish:
|
||||||
family_plugin_mapping = (
|
new_plugin_mapping = {}
|
||||||
ayon_publish["ValidateLoadedPlugin"]["family_plugins_mapping"]
|
loaded_plugin = (
|
||||||
)
|
ayon_publish["ValidateLoadedPlugin"]
|
||||||
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
|
|
||||||
)
|
)
|
||||||
|
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
|
output["max"] = ayon_max
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import json
|
import json
|
||||||
from pydantic import Field, validator
|
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
|
from ayon_server.exceptions import BadRequestException
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -27,20 +27,31 @@ class ValidateAttributesModel(BaseSettingsModel):
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
class FamilyPluginsMappingModel(BaseSettingsModel):
|
class FamilyMappingItemModel(BaseSettingsModel):
|
||||||
_layout = "compact"
|
_layout = "compact"
|
||||||
product_types: str = Field(title="Product Types")
|
name: str = Field("", title="Product type")
|
||||||
plugins: list[str] = Field(
|
plugins: list[str] = Field(
|
||||||
default_factory=list,title="Plugins")
|
default_factory=list,
|
||||||
|
title="Plugins"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ValidateLoadedPluginModel(BaseSettingsModel):
|
class ValidateLoadedPluginModel(BaseSettingsModel):
|
||||||
enabled: bool = Field(title="ValidateLoadedPlugin")
|
enabled: bool = Field(title="Enabled")
|
||||||
optional: bool = Field(title="Optional")
|
optional: bool = Field(title="Optional")
|
||||||
family_plugins_mapping: list[FamilyPluginsMappingModel] = Field(
|
family_plugins_mapping: list[FamilyMappingItemModel] = (
|
||||||
default_factory=list, title="Family Plugins Mapping"
|
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):
|
class BasicValidateModel(BaseSettingsModel):
|
||||||
enabled: bool = Field(title="Enabled")
|
enabled: bool = Field(title="Enabled")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue