replaced 'format_template_with_optional_keys' with 'StringTemplate'

This commit is contained in:
Jakub Trllo 2022-03-18 14:20:20 +01:00
parent 8e1ec6d251
commit 6eaf7017eb
6 changed files with 46 additions and 39 deletions

View file

@ -3,9 +3,10 @@ import re
import pyblish.api
import json
from avalon.api import format_template_with_optional_keys
from openpype.lib import prepare_template_data
from openpype.lib import (
prepare_template_data,
StringTemplate,
)
class CollectTextures(pyblish.api.ContextPlugin):
@ -110,8 +111,9 @@ class CollectTextures(pyblish.api.ContextPlugin):
formatting_data.update(explicit_data)
fill_pairs = prepare_template_data(formatting_data)
workfile_subset = format_template_with_optional_keys(
fill_pairs, self.workfile_subset_template)
workfile_subset = StringTemplate.format_strict_template(
self.workfile_subset_template, fill_pairs
)
asset_build = self._get_asset_build(
repre_file,
@ -201,8 +203,9 @@ class CollectTextures(pyblish.api.ContextPlugin):
formatting_data.update(explicit_data)
fill_pairs = prepare_template_data(formatting_data)
subset = format_template_with_optional_keys(
fill_pairs, self.texture_subset_template)
subset = StringTemplate.format_strict_template(
self.texture_subset_template, fill_pairs
)
asset_build = self._get_asset_build(
repre_file,

View file

@ -4,7 +4,8 @@ import os
from avalon import api, io
from openpype.lib import (
get_workfile_template_key_from_context,
get_workdir_data
get_workdir_data,
StringTemplate,
)
from openpype.api import Anatomy
from openpype.hosts.tvpaint.api import lib, pipeline, plugin
@ -69,7 +70,7 @@ class LoadWorkfile(plugin.Loader):
data["root"] = anatomy.roots
data["user"] = getpass.getuser()
template = anatomy.templates[template_key]["file"]
file_template = anatomy.templates[template_key]["file"]
# Define saving file extension
if current_file:
@ -81,11 +82,12 @@ class LoadWorkfile(plugin.Loader):
data["ext"] = extension
work_root = api.format_template_with_optional_keys(
data, anatomy.templates[template_key]["folder"]
folder_template = anatomy.templates[template_key]["folder"]
work_root = StringTemplate.format_strict_template(
folder_template, data
)
version = api.last_workfile_with_version(
work_root, template, data, host.file_extensions()
work_root, file_template, data, host.file_extensions()
)[1]
if version is None:
@ -95,8 +97,8 @@ class LoadWorkfile(plugin.Loader):
data["version"] = version
path = os.path.join(
work_root,
api.format_template_with_optional_keys(data, template)
filename = StringTemplate.format_strict_template(
file_template, data
)
path = os.path.join(work_root, filename)
host.save_file(path)

View file

@ -5,6 +5,11 @@ import glob
import clique
import collections
from .path_templates import (
StringTemplate,
TemplateUnsolved,
)
def collect_frames(files):
"""
@ -52,8 +57,6 @@ def sizeof_fmt(num, suffix='B'):
def path_from_representation(representation, anatomy):
from avalon import pipeline # safer importing
try:
template = representation["data"]["template"]
@ -63,12 +66,10 @@ def path_from_representation(representation, anatomy):
try:
context = representation["context"]
context["root"] = anatomy.roots
path = pipeline.format_template_with_optional_keys(
context, template
)
path = os.path.normpath(path.replace("/", "\\"))
path = StringTemplate.format_strict_template(template, context)
return os.path.normpath(path)
except KeyError:
except TemplateUnsolved:
# Template references unavailable data
return None

View file

@ -5,11 +5,11 @@ import uuid
import clique
from pymongo import UpdateOne
from openpype_modules.ftrack.lib import BaseAction, statics_icon
from avalon.api import AvalonMongoDB
from openpype.api import Anatomy
import avalon.pipeline
from openpype.api import Anatomy
from openpype.lib import StringTemplate, TemplateUnsolved
from openpype_modules.ftrack.lib import BaseAction, statics_icon
class DeleteOldVersions(BaseAction):
@ -563,18 +563,16 @@ class DeleteOldVersions(BaseAction):
try:
context = representation["context"]
context["root"] = anatomy.roots
path = avalon.pipeline.format_template_with_optional_keys(
context, template
)
path = StringTemplate.format_strict_template(template, context)
if "frame" in context:
context["frame"] = self.sequence_splitter
sequence_path = os.path.normpath(
avalon.pipeline.format_template_with_optional_keys(
StringTemplate.format_strict_template(
context, template
)
)
except KeyError:
except (KeyError, TemplateUnsolved):
# Template references unavailable data
return (None, None)

View file

@ -525,7 +525,7 @@ def get_representation_path(representation, root=None, dbcon=None):
"""
from openpype.lib import StringTemplate
from openpype.lib import StringTemplate, TemplateUnsolved
if dbcon is None:
dbcon = io
@ -542,13 +542,14 @@ def get_representation_path(representation, root=None, dbcon=None):
try:
context = representation["context"]
context["root"] = root
template_obj = StringTemplate(template)
path = str(template_obj.format(context))
path = StringTemplate.format_strict_template(
template, context
)
# Force replacing backslashes with forward slashed if not on
# windows
if platform.system().lower() != "windows":
path = path.replace("\\", "/")
except KeyError:
except (TemplateUnsolved, KeyError):
# Template references unavailable data
return None

View file

@ -12,14 +12,15 @@ import shutil
from pymongo import DeleteOne, InsertOne
import pyblish.api
from avalon import io
from avalon.api import format_template_with_optional_keys
import openpype.api
from datetime import datetime
# from pype.modules import ModulesManager
from openpype.lib.profiles_filtering import filter_profiles
from openpype.lib import (
prepare_template_data,
create_hard_link
create_hard_link,
StringTemplate,
TemplateUnsolved
)
# this is needed until speedcopy for linux is fixed
@ -854,9 +855,10 @@ class IntegrateAssetNew(pyblish.api.InstancePlugin):
fill_pairs = prepare_template_data(fill_pairs)
try:
filled_template = \
format_template_with_optional_keys(fill_pairs, template)
except KeyError:
filled_template = StringTemplate.format_strict_template(
template, fill_pairs
)
except (KeyError, TemplateUnsolved):
keys = []
if fill_pairs:
keys = fill_pairs.keys()