clean up code tweaks for OP settings(not suitable for ayon yet)

This commit is contained in:
Kayla Man 2023-11-08 16:35:28 +08:00
parent 09f1fe363a
commit cfc5443909
4 changed files with 59 additions and 41 deletions

View file

@ -51,34 +51,36 @@ class ValidateLoadedPlugin(OptionalPyblishPluginMixin,
get_plugins())
}
for families, plugin in required_plugins.items():
# Out of for loop build the instance family lookup
instance_families = {instance.data["family"]}
instance_families.update(instance.data.get("families", []))
self.log.debug(f"{instance_families}")
# In the for loop check whether any family matches
# Build instance families lookup
instance_families = {instance.data["family"]}
instance_families.update(instance.data.get("families", []))
self.log.debug(f"Checking plug-in validation for instance families: {instance_families}")
for families in required_plugins.keys():
# Check for matching families
match_families = {fam.strip() for fam in
families.split(",") if fam.strip()}
self.log.debug(f"match_families: {match_families}")
self.log.debug(f"Plug-in family requirements: {match_families}")
has_match = "*" in match_families or match_families.intersection(
instance_families) or families == "_"
instance_families)
if not has_match:
continue
if not plugin:
return
plugins = [plugin for plugin in required_plugins[families]["plugins"]]
for plugin in plugins:
if not plugin:
return
plugin_name = plugin.format(**os.environ).lower()
plugin_index = available_plugins.get(plugin_name)
plugin_name = plugin.format(**os.environ).lower()
plugin_index = available_plugins.get(plugin_name)
if plugin_index is None:
invalid.append(
f"Plugin {plugin} does not exist in 3dsMax Plugin List."
)
continue
if plugin_index is None:
invalid.append(
f"Plugin {plugin} does not exist in 3dsMax Plugin List."
)
continue
if not rt.pluginManager.isPluginDllLoaded(plugin_index):
invalid.append(f"Plugin {plugin} not loaded.")
if not rt.pluginManager.isPluginDllLoaded(plugin_index):
invalid.append(f"Plugin {plugin} not loaded.")
return invalid
@ -108,25 +110,29 @@ class ValidateLoadedPlugin(OptionalPyblishPluginMixin,
["ValidateLoadedPlugin"]
["family_plugins_mapping"]
)
for families, plugin in required_plugins.items():
families_list = families.split(",")
excluded_families = [family for family in families_list
if instance.data["family"] != family
and family != "_"]
if excluded_families:
cls.log.debug("The {} instance is not part of {}.".format(
instance.data["family"], excluded_families
))
continue
if not plugin:
instance_families = {instance.data["family"]}
instance_families.update(instance.data.get("families", []))
cls.log.debug(f"Checking plug-in validation for instance families: {instance_families}")
for families in required_plugins.keys():
match_families = {fam.strip() for fam in
families.split(",") if fam.strip()}
cls.log.debug(f"Plug-in family requirements: {match_families}")
has_match = "*" in match_families or match_families.intersection(
instance_families)
if not has_match:
continue
plugin_name = plugin.format(**os.environ).lower()
plugin_index = available_plugins.get(plugin_name)
plugins = [plugin for plugin in required_plugins[families]["plugins"]]
for plugin in plugins:
if not plugin:
return
plugin_name = plugin.format(**os.environ).lower()
plugin_index = available_plugins.get(plugin_name)
if plugin_index is None:
cls.log.warning(f"Can't enable missing plugin: {plugin}")
continue
if plugin_index is None:
cls.log.warning(f"Can't enable missing plugin: {plugin}")
continue
if not rt.pluginManager.isPluginDllLoaded(plugin_index):
rt.pluginManager.loadPluginDll(plugin_index)
if not rt.pluginManager.isPluginDllLoaded(plugin_index):
rt.pluginManager.loadPluginDll(plugin_index)

View file

@ -653,6 +653,9 @@ def _convert_3dsmax_project_settings(ayon_settings, output):
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

View file

@ -72,7 +72,15 @@
"label": "Family Plugins Mapping",
"use_label_wrap": true,
"object_type": {
"type": "text"
"type": "dict",
"children": [
{
"key": "plugins",
"label": "plugins",
"type": "list",
"object_type": "text"
}
]
}
}
]

View file

@ -29,8 +29,9 @@ class ValidateAttributesModel(BaseSettingsModel):
class FamilyPluginsMappingModel(BaseSettingsModel):
_layout = "compact"
families: str = Field(title="Families")
plugins: str = Field(title="Plugins")
product_types: str = Field(title="Product Types")
plugins: list[str] = Field(
default_factory=list,title="Plugins")
class ValidateLoadedPluginModel(BaseSettingsModel):