Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

General: Separate extraction of template data into more functions #3574

19 changes: 7 additions & 12 deletions openpype/hosts/nuke/api/lib.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
Logger,
BuildWorkfile,
get_version_from_path,
get_workdir_data,
get_current_project_settings,
)
from openpype.tools.utils import host_tools
Expand All @@ -34,6 +33,7 @@
get_anatomy_settings,
)
from openpype.modules import ModulesManager
from openpype.pipeline.template_data import get_template_data_with_names
from openpype.pipeline import (
discover_legacy_creator_plugins,
legacy_io,
Expand Down Expand Up @@ -910,19 +910,17 @@ def get_render_path(node):
''' Generate Render path from presets regarding avalon knob data
'''
avalon_knob_data = read_avalon_data(node)
data = {'avalon': avalon_knob_data}

nuke_imageio_writes = get_imageio_node_setting(
node_class=avalon_knob_data["family"],
plugin_name=avalon_knob_data["creator"],
subset=avalon_knob_data["subset"]
)
host_name = os.environ.get("AVALON_APP")

data.update({
"app": host_name,
data = {
"avalon": avalon_knob_data,
"nuke_imageio_writes": nuke_imageio_writes
})
}

anatomy_filled = format_anatomy(data)
return anatomy_filled["render"]["path"].replace("\\", "/")
Expand Down Expand Up @@ -965,12 +963,11 @@ def format_anatomy(data):
data["version"] = get_version_from_path(file)

project_name = anatomy.project_name
project_doc = get_project(project_name)
asset_doc = get_asset_by_name(project_name, data["avalon"]["asset"])
asset_name = data["avalon"]["asset"]
task_name = os.environ["AVALON_TASK"]
host_name = os.environ["AVALON_APP"]
context_data = get_workdir_data(
project_doc, asset_doc, task_name, host_name
context_data = get_template_data_with_names(
project_name, asset_name, task_name, host_name
)
data.update(context_data)
data.update({
Expand Down Expand Up @@ -1128,10 +1125,8 @@ def create_write_node(
if knob["name"] == "file_type":
representation = knob["value"]

host_name = os.environ.get("AVALON_APP")
try:
data.update({
"app": host_name,
"imageio_writes": imageio_writes,
"representation": representation,
})
Expand Down
10 changes: 4 additions & 6 deletions openpype/hosts/tvpaint/plugins/load/load_workfile.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
import os

from openpype.client import get_project, get_asset_by_name
from openpype.lib import (
StringTemplate,
get_workfile_template_key_from_context,
get_workdir_data,
get_last_workfile_with_version,
)
from openpype.pipeline import (
registered_host,
legacy_io,
Anatomy,
)
from openpype.pipeline.template_data import get_template_data_with_names
from openpype.hosts.tvpaint.api import lib, pipeline, plugin


Expand Down Expand Up @@ -54,9 +53,6 @@ def load(self, context, name, namespace, options):
asset_name = legacy_io.Session["AVALON_ASSET"]
task_name = legacy_io.Session["AVALON_TASK"]

project_doc = get_project(project_name)
asset_doc = get_asset_by_name(project_name, asset_name)

template_key = get_workfile_template_key_from_context(
asset_name,
task_name,
Expand All @@ -66,7 +62,9 @@ def load(self, context, name, namespace, options):
)
anatomy = Anatomy(project_name)

data = get_workdir_data(project_doc, asset_doc, task_name, host_name)
data = get_template_data_with_names(
project_name, asset_name, task_name, host_name
)
data["root"] = anatomy.roots

file_template = anatomy.templates[template_key]["file"]
Expand Down
13 changes: 4 additions & 9 deletions openpype/hosts/unreal/hooks/pre_workfile_preparation.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# -*- coding: utf-8 -*-
"""Hook to launch Unreal and prepare projects."""
import os
import copy
from pathlib import Path

from openpype.lib import (
PreLaunchHook,
ApplicationLaunchFailed,
ApplicationNotFound,
get_workdir_data,
get_workfile_template_key
)
import openpype.hosts.unreal.lib as unreal_lib
Expand Down Expand Up @@ -35,18 +35,13 @@ def _get_work_filename(self):
return last_workfile.name

# Prepare data for fill data and for getting workfile template key
task_name = self.data["task_name"]
anatomy = self.data["anatomy"]
asset_doc = self.data["asset_doc"]
project_doc = self.data["project_doc"]

asset_tasks = asset_doc.get("data", {}).get("tasks") or {}
task_info = asset_tasks.get(task_name) or {}
task_type = task_info.get("type")
# Use already prepared workdir data
workdir_data = copy.deepcopy(self.data["workdir_data"])
task_type = workdir_data.get("task", {}).get("type")

workdir_data = get_workdir_data(
project_doc, asset_doc, task_name, self.host_name
)
# QUESTION raise exception if version is part of filename template?
workdir_data["version"] = 1
workdir_data["ext"] = "uproject"
Expand Down
10 changes: 7 additions & 3 deletions openpype/lib/applications.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
from .profiles_filtering import filter_profiles
from .local_settings import get_openpype_username
from .avalon_context import (
get_workdir_data,
get_workdir_with_workdir_data,
get_workfile_template_key,
get_last_workfile
Expand Down Expand Up @@ -1576,6 +1575,9 @@ def prepare_context_environments(data, env_group=None):
data (EnvironmentPrepData): Dictionary where result and intermediate
result will be stored.
"""

from openpype.pipeline.template_data import get_template_data

# Context environments
log = data["log"]

Expand All @@ -1596,7 +1598,9 @@ def prepare_context_environments(data, env_group=None):
# Load project specific environments
project_name = project_doc["name"]
project_settings = get_project_settings(project_name)
system_settings = get_system_settings()
data["project_settings"] = project_settings
data["system_settings"] = system_settings
# Apply project specific environments on current env value
apply_project_environments_value(
project_name, data["env"], project_settings, env_group
Expand All @@ -1619,8 +1623,8 @@ def prepare_context_environments(data, env_group=None):
if not app.is_host:
return

workdir_data = get_workdir_data(
project_doc, asset_doc, task_name, app.host_name
workdir_data = get_template_data(
project_doc, asset_doc, task_name, app.host_name, system_settings
)
data["workdir_data"] = workdir_data

Expand Down
Loading