OP-3283 - refactored logic

Easier solution found without reinventing logic.
This commit is contained in:
Petr Kalis 2022-07-29 14:41:28 +02:00
parent 831884232c
commit 90962d6735
3 changed files with 20 additions and 82 deletions

View file

@ -2,11 +2,6 @@ import re
from openpype.pipeline import LoaderPlugin
from .launch_logic import stub
from openpype.pipeline import legacy_io
from openpype.client import get_asset_by_name
from openpype.settings import get_project_settings
from openpype.lib import prepare_template_data
from openpype.lib.profiles_filtering import filter_profiles
def get_unique_layer_name(layers, asset_name, subset_name):
@ -38,51 +33,3 @@ class PhotoshopLoader(LoaderPlugin):
@staticmethod
def get_stub():
return stub()
def get_subset_template(family):
"""Get subset template name from Settings"""
project_name = legacy_io.Session["AVALON_PROJECT"]
asset_name = legacy_io.Session["AVALON_ASSET"]
task_name = legacy_io.Session["AVALON_TASK"]
asset_doc = get_asset_by_name(
project_name, asset_name, fields=["data.tasks"]
)
asset_tasks = asset_doc.get("data", {}).get("tasks") or {}
task_info = asset_tasks.get(task_name) or {}
task_type = task_info.get("type")
tools_settings = get_project_settings(project_name)["global"]["tools"]
profiles = tools_settings["creator"]["subset_name_profiles"]
filtering_criteria = {
"families": family,
"hosts": "photoshop",
"tasks": task_name,
"task_types": task_type
}
matching_profile = filter_profiles(profiles, filtering_criteria)
if matching_profile:
return matching_profile["template"]
def get_subset_name_for_multiple(subset_name, subset_template, group,
family, variant):
"""Update subset name with layer information to differentiate multiple
subset_template might contain specific way how to format layer name
({layer},{Layer} or {LAYER}). If subset_template doesn't contain placeholder
at all, fall back to original solution.
"""
if not subset_template or 'layer' not in subset_template.lower():
subset_name += group.name.title().replace(" ", "")
else:
fill_pairs = {
"family": family,
"variant": variant,
"task": legacy_io.Session["AVALON_TASK"],
"layer": group.name
}
return subset_template.format(**prepare_template_data(fill_pairs))

View file

@ -5,10 +5,7 @@ from openpype.pipeline import (
CreatedInstance,
legacy_io
)
from openpype.hosts.photoshop.api.plugin import (
get_subset_template,
get_subset_name_for_multiple
)
from openpype.lib import prepare_template_data
class ImageCreator(Creator):
@ -71,6 +68,7 @@ class ImageCreator(Creator):
group = stub.group_selected_layers(layer.name)
groups_to_create.append(group)
layer_name = ''
creating_multiple_groups = len(groups_to_create) > 1
for group in groups_to_create:
subset_name = subset_name_from_ui # reset to name from creator UI
@ -78,13 +76,12 @@ class ImageCreator(Creator):
created_group_name = self._clean_highlights(stub, group.name)
if creating_multiple_groups:
# concatenate with layer name to differentiate subsets
subset_template = get_subset_template(self.family)
subset_name = get_subset_name_for_multiple(subset_name,
subset_template,
group,
self.family,
data["variant"])
layer_name = group.name
if "{layer}" not in subset_name.lower():
subset_name += "{Layer}"
layer_fill = prepare_template_data({"layer": layer_name})
subset_name = subset_name.format(**layer_fill)
if group.long_name:
for directory in group.long_name[::-1]:
@ -160,7 +157,5 @@ class ImageCreator(Creator):
return item.replace(stub.PUBLISH_ICON, '').replace(stub.LOADED_ICON,
'')
@classmethod
def get_dynamic_data(
cls, variant, task_name, asset_id, project_name, host_name
):
return {"layer": ""}
def get_dynamic_data(cls, *args, **kwargs):
return {"layer": "{layer}"}

View file

@ -2,10 +2,7 @@ from Qt import QtWidgets
from openpype.pipeline import create
from openpype.hosts.photoshop import api as photoshop
from openpype.hosts.photoshop.api.plugin import (
get_subset_template,
get_subset_name_for_multiple
)
from openpype.lib import prepare_template_data
class CreateImage(create.LegacyCreator):
@ -80,6 +77,7 @@ class CreateImage(create.LegacyCreator):
groups.append(group)
creator_subset_name = self.data["subset"]
layer_name = ''
for group in groups:
long_names = []
group.name = group.name.replace(stub.PUBLISH_ICON, ''). \
@ -87,12 +85,12 @@ class CreateImage(create.LegacyCreator):
subset_name = creator_subset_name
if len(groups) > 1:
subset_template = get_subset_template(self.family)
subset_name = get_subset_name_for_multiple(subset_name,
subset_template,
group,
self.family,
self.data["variant"])
layer_name = group.name
if "{layer}" not in subset_name.lower():
subset_name += "{Layer}"
layer_fill = prepare_template_data({"layer": layer_name})
subset_name = subset_name.format(**layer_fill)
if group.long_name:
for directory in group.long_name[::-1]:
@ -110,7 +108,5 @@ class CreateImage(create.LegacyCreator):
stub.rename_layer(group.id, stub.PUBLISH_ICON + group.name)
@classmethod
def get_dynamic_data(
cls, variant, task_name, asset_id, project_name, host_name
):
return {"layer": ""}
def get_dynamic_data(cls, *args, **kwargs):
return {"layer": "{layer}"}