mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
OP-6874 - remove trailing underscore in subset name (#5647)
If {layer} placeholder is at the end of subset name template and not used (for example in auto_image where separating it by layer doesn't make any sense) trailing '_' was kept.
This updates cleaning logic and extracts it as it might be similar in regular `image` instance.
This commit is contained in:
parent
192b9ac79d
commit
1bd07bd15b
4 changed files with 46 additions and 13 deletions
|
|
@ -1,5 +1,8 @@
|
|||
import re
|
||||
|
||||
import openpype.hosts.photoshop.api as api
|
||||
from openpype.client import get_asset_by_name
|
||||
from openpype.lib import prepare_template_data
|
||||
from openpype.pipeline import (
|
||||
AutoCreator,
|
||||
CreatedInstance
|
||||
|
|
@ -78,3 +81,17 @@ class PSAutoCreator(AutoCreator):
|
|||
existing_instance["asset"] = asset_name
|
||||
existing_instance["task"] = task_name
|
||||
existing_instance["subset"] = subset_name
|
||||
|
||||
|
||||
def clean_subset_name(subset_name):
|
||||
"""Clean all variants leftover {layer} from subset name."""
|
||||
dynamic_data = prepare_template_data({"layer": "{layer}"})
|
||||
for value in dynamic_data.values():
|
||||
if value in subset_name:
|
||||
subset_name = (subset_name.replace(value, "")
|
||||
.replace("__", "_")
|
||||
.replace("..", "."))
|
||||
# clean trailing separator as Main_
|
||||
pattern = r'[\W_]+$'
|
||||
replacement = ''
|
||||
return re.sub(pattern, replacement, subset_name)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from openpype.pipeline import CreatedInstance
|
|||
|
||||
from openpype.lib import BoolDef
|
||||
import openpype.hosts.photoshop.api as api
|
||||
from openpype.hosts.photoshop.lib import PSAutoCreator
|
||||
from openpype.hosts.photoshop.lib import PSAutoCreator, clean_subset_name
|
||||
from openpype.pipeline.create import get_subset_name
|
||||
from openpype.lib import prepare_template_data
|
||||
from openpype.client import get_asset_by_name
|
||||
|
|
@ -129,14 +129,4 @@ class AutoImageCreator(PSAutoCreator):
|
|||
self.family, variant, task_name, asset_doc,
|
||||
project_name, host_name, dynamic_data=dynamic_data
|
||||
)
|
||||
return self._clean_subset_name(subset_name)
|
||||
|
||||
def _clean_subset_name(self, subset_name):
|
||||
"""Clean all variants leftover {layer} from subset name."""
|
||||
dynamic_data = prepare_template_data({"layer": "{layer}"})
|
||||
for value in dynamic_data.values():
|
||||
if value in subset_name:
|
||||
return (subset_name.replace(value, "")
|
||||
.replace("__", "_")
|
||||
.replace("..", "."))
|
||||
return subset_name
|
||||
return clean_subset_name(subset_name)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ from openpype.pipeline import (
|
|||
from openpype.lib import prepare_template_data
|
||||
from openpype.pipeline.create import SUBSET_NAME_ALLOWED_SYMBOLS
|
||||
from openpype.hosts.photoshop.api.pipeline import cache_and_get_instances
|
||||
from openpype.hosts.photoshop.lib import clean_subset_name
|
||||
|
||||
|
||||
class ImageCreator(Creator):
|
||||
|
|
@ -88,6 +89,7 @@ class ImageCreator(Creator):
|
|||
|
||||
layer_fill = prepare_template_data({"layer": layer_name})
|
||||
subset_name = subset_name.format(**layer_fill)
|
||||
subset_name = clean_subset_name(subset_name)
|
||||
|
||||
if group.long_name:
|
||||
for directory in group.long_name[::-1]:
|
||||
|
|
@ -184,7 +186,6 @@ class ImageCreator(Creator):
|
|||
self.mark_for_review = plugin_settings["mark_for_review"]
|
||||
self.enabled = plugin_settings["enabled"]
|
||||
|
||||
|
||||
def get_detail_description(self):
|
||||
return """Creator for Image instances
|
||||
|
||||
|
|
|
|||
25
tests/unit/openpype/hosts/photoshop/test_lib.py
Normal file
25
tests/unit/openpype/hosts/photoshop/test_lib.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
import pytest
|
||||
|
||||
from openpype.hosts.photoshop.lib import clean_subset_name
|
||||
|
||||
"""
|
||||
Tests cleanup of unused layer placeholder ({layer}) from subset name.
|
||||
Layer differentiation might be desired in subset name, but in some cases it
|
||||
might be used (in `auto_image` - only single image without layer diff.,
|
||||
single image instance created without toggled use of subset name etc.)
|
||||
"""
|
||||
|
||||
|
||||
def test_no_layer_placeholder():
|
||||
clean_subset = clean_subset_name("imageMain")
|
||||
assert "imageMain" == clean_subset
|
||||
|
||||
|
||||
@pytest.mark.parametrize("subset_name",
|
||||
["imageMain{Layer}",
|
||||
"imageMain_{layer}", # trailing _
|
||||
"image{Layer}Main",
|
||||
"image{LAYER}Main"])
|
||||
def test_not_used_layer_placeholder(subset_name):
|
||||
clean_subset = clean_subset_name(subset_name)
|
||||
assert "imageMain" == clean_subset
|
||||
Loading…
Add table
Add a link
Reference in a new issue