Merge pull request #103 from ynput/enhancement/OP-8316_Use-folder-in-current-context

Chore: Use folder path in current context
This commit is contained in:
Jakub Trllo 2024-02-27 18:17:45 +01:00 committed by GitHub
commit 3dd124ac15
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
25 changed files with 58 additions and 58 deletions

View file

@ -106,7 +106,7 @@ class Commands:
context = get_global_context() context = get_global_context()
env = get_app_environments_for_context( env = get_app_environments_for_context(
context["project_name"], context["project_name"],
context["asset_name"], context["folder_path"],
context["task_name"], context["task_name"],
app_full_name, app_full_name,
launch_type=LaunchTypes.farm_publish, launch_type=LaunchTypes.farm_publish,

View file

@ -54,7 +54,7 @@ class CopyTemplateWorkfile(PreLaunchHook):
self.log.info("Last workfile does not exist.") self.log.info("Last workfile does not exist.")
project_name = self.data["project_name"] project_name = self.data["project_name"]
asset_name = self.data["asset_name"] asset_name = self.data["folder_path"]
task_name = self.data["task_name"] task_name = self.data["task_name"]
host_name = self.application.host_name host_name = self.application.host_name

View file

@ -22,7 +22,7 @@ class GlobalHostDataHook(PreLaunchHook):
app = self.launch_context.application app = self.launch_context.application
temp_data = EnvironmentPrepData({ temp_data = EnvironmentPrepData({
"project_name": self.data["project_name"], "project_name": self.data["project_name"],
"asset_name": self.data["asset_name"], "folder_path": self.data["folder_path"],
"task_name": self.data["task_name"], "task_name": self.data["task_name"],
"app": app, "app": app,
@ -66,7 +66,7 @@ class GlobalHostDataHook(PreLaunchHook):
project_doc = get_project(project_name) project_doc = get_project(project_name)
self.data["project_doc"] = project_doc self.data["project_doc"] = project_doc
asset_name = self.data.get("asset_name") asset_name = self.data.get("folder_path")
if not asset_name: if not asset_name:
self.log.warning( self.log.warning(
"Asset name was not set. Skipping asset document query." "Asset name was not set. Skipping asset document query."

View file

@ -27,7 +27,7 @@ class OCIOEnvHook(PreLaunchHook):
template_data = get_template_data_with_names( template_data = get_template_data_with_names(
project_name=self.data["project_name"], project_name=self.data["project_name"],
asset_name=self.data["asset_name"], asset_name=self.data["folder_path"],
task_name=self.data["task_name"], task_name=self.data["task_name"],
host_name=self.host_name, host_name=self.host_name,
system_settings=self.data["system_settings"] system_settings=self.data["system_settings"]

View file

@ -134,12 +134,12 @@ class HostBase(object):
Returns: Returns:
Dict[str, Union[str, None]]: Context with 3 keys 'project_name', Dict[str, Union[str, None]]: Context with 3 keys 'project_name',
'asset_name' and 'task_name'. All of them can be 'None'. 'folder_path' and 'task_name'. All of them can be 'None'.
""" """
return { return {
"project_name": self.get_current_project_name(), "project_name": self.get_current_project_name(),
"asset_name": self.get_current_asset_name(), "folder_path": self.get_current_asset_name(),
"task_name": self.get_current_task_name() "task_name": self.get_current_task_name()
} }
@ -161,7 +161,7 @@ class HostBase(object):
# Use current context to fill the context title # Use current context to fill the context title
current_context = self.get_current_context() current_context = self.get_current_context()
project_name = current_context["project_name"] project_name = current_context["project_name"]
asset_name = current_context["asset_name"] asset_name = current_context["folder_path"]
task_name = current_context["task_name"] task_name = current_context["task_name"]
items = [] items = []
if project_name: if project_name:

View file

@ -128,7 +128,7 @@ def set_settings(frames, resolution, comp_ids=None, print_msg=True):
current_context = get_current_context() current_context = get_current_context()
asset_doc = get_asset_by_name(current_context["project_name"], asset_doc = get_asset_by_name(current_context["project_name"],
current_context["asset_name"]) current_context["folder_path"])
settings = get_asset_settings(asset_doc) settings = get_asset_settings(asset_doc)
msg = '' msg = ''

View file

@ -835,7 +835,7 @@ def get_current_context_template_data_with_asset_data():
context = get_current_context() context = get_current_context()
project_name = context["project_name"] project_name = context["project_name"]
asset_name = context["asset_name"] asset_name = context["folder_path"]
task_name = context["task_name"] task_name = context["task_name"]
host_name = get_current_host_name() host_name = get_current_host_name()

View file

@ -1950,10 +1950,7 @@ class WorkfileSettings(object):
Context._project_doc = project_doc Context._project_doc = project_doc
self._project_name = project_name self._project_name = project_name
self._asset = ( self._asset = get_current_asset_name()
kwargs.get("asset_name")
or get_current_asset_name()
)
self._asset_entity = get_asset_by_name(project_name, self._asset) self._asset_entity = get_asset_by_name(project_name, self._asset)
self._root_node = root_node or nuke.root() self._root_node = root_node or nuke.root()
self._nodes = self.get_nodes(nodes=nodes) self._nodes = self.get_nodes(nodes=nodes)

View file

@ -99,7 +99,7 @@ class TVPaintHost(HostBase, IWorkfileHost, ILoadHost, IPublishHost):
Union[str, None]: Current asset name. Union[str, None]: Current asset name.
""" """
return self.get_current_context().get("asset_name") return self.get_current_context().get("folder_path")
def get_current_task_name(self): def get_current_task_name(self):
""" """
@ -115,11 +115,13 @@ class TVPaintHost(HostBase, IWorkfileHost, ILoadHost, IPublishHost):
return get_global_context() return get_global_context()
if "project_name" in context: if "project_name" in context:
if "asset_name" in context:
context["folder_path"] = context["asset_name"]
return context return context
# This is legacy way how context was stored # This is legacy way how context was stored
return { return {
"project_name": context.get("project"), "project_name": context.get("project"),
"asset_name": context.get("asset"), "folder_path": context.get("asset"),
"task_name": context.get("task") "task_name": context.get("task")
} }

View file

@ -58,7 +58,7 @@ class LoadWorkfile(plugin.Loader):
if not asset_name: if not asset_name:
context = get_current_context() context = get_current_context()
project_name = context["project_name"] project_name = context["project_name"]
asset_name = context["asset_name"] asset_name = context["folder_path"]
task_name = context["task_name"] task_name = context["task_name"]
template_key = get_workfile_template_key_from_context( template_key = get_workfile_template_key_from_context(

View file

@ -65,7 +65,7 @@ class CollectWorkfileData(pyblish.api.ContextPlugin):
# Collect and store current context to have reference # Collect and store current context to have reference
current_context = { current_context = {
"project_name": context.data["projectName"], "project_name": context.data["projectName"],
"asset_name": context.data["folderPath"], "folder_path": context.data["folderPath"],
"task_name": context.data["task"] "task_name": context.data["task"]
} }
self.log.debug("Current context is: {}".format(current_context)) self.log.debug("Current context is: {}".format(current_context))
@ -77,7 +77,7 @@ class CollectWorkfileData(pyblish.api.ContextPlugin):
if "project" in workfile_context: if "project" in workfile_context:
workfile_context = { workfile_context = {
"project_name": workfile_context.get("project"), "project_name": workfile_context.get("project"),
"asset_name": workfile_context.get("asset"), "folder_path": workfile_context.get("asset"),
"task_name": workfile_context.get("task"), "task_name": workfile_context.get("task"),
} }
# Store workfile context to pyblish context # Store workfile context to pyblish context
@ -85,18 +85,18 @@ class CollectWorkfileData(pyblish.api.ContextPlugin):
if workfile_context: if workfile_context:
# Change current context with context from workfile # Change current context with context from workfile
key_map = ( key_map = (
("AYON_FOLDER_PATH", "asset_name"), ("AYON_FOLDER_PATH", "folder_path"),
("AYON_TASK_NAME", "task_name") ("AYON_TASK_NAME", "task_name")
) )
for env_key, key in key_map: for env_key, key in key_map:
os.environ[env_key] = workfile_context[key] os.environ[env_key] = workfile_context[key]
self.log.info("Context changed to: {}".format(workfile_context)) self.log.info("Context changed to: {}".format(workfile_context))
asset_name = workfile_context["asset_name"] asset_name = workfile_context["folder_path"]
task_name = workfile_context["task_name"] task_name = workfile_context["task_name"]
else: else:
asset_name = current_context["asset_name"] asset_name = current_context["folder_path"]
task_name = current_context["task_name"] task_name = current_context["task_name"]
# Handle older workfiles or workfiles without metadata # Handle older workfiles or workfiles without metadata
self.log.warning(( self.log.warning((

View file

@ -31,7 +31,7 @@ class ValidateWorkfileMetadata(pyblish.api.ContextPlugin):
actions = [ValidateWorkfileMetadataRepair] actions = [ValidateWorkfileMetadataRepair]
required_keys = {"project_name", "asset_name", "task_name"} required_keys = {"project_name", "folder_path", "task_name"}
def process(self, context): def process(self, context):
workfile_context = context.data["workfile_context"] workfile_context = context.data["workfile_context"]

View file

@ -489,7 +489,7 @@ class ApplicationManager:
"""Launch procedure. """Launch procedure.
For host application it's expected to contain "project_name", For host application it's expected to contain "project_name",
"asset_name" and "task_name". "folder_path" and "task_name".
Args: Args:
app_name (str): Name of application that should be launched. app_name (str): Name of application that should be launched.
@ -1406,7 +1406,7 @@ class EnvironmentPrepData(dict):
def get_app_environments_for_context( def get_app_environments_for_context(
project_name, project_name,
asset_name, folder_path,
task_name, task_name,
app_name, app_name,
env_group=None, env_group=None,
@ -1417,7 +1417,7 @@ def get_app_environments_for_context(
"""Prepare environment variables by context. """Prepare environment variables by context.
Args: Args:
project_name (str): Name of project. project_name (str): Name of project.
asset_name (str): Name of asset. folder_path (str): Folder path.
task_name (str): Name of task. task_name (str): Name of task.
app_name (str): Name of application that is launched and can be found app_name (str): Name of application that is launched and can be found
by ApplicationManager. by ApplicationManager.
@ -1439,7 +1439,7 @@ def get_app_environments_for_context(
context = app_manager.create_launch_context( context = app_manager.create_launch_context(
app_name, app_name,
project_name=project_name, project_name=project_name,
asset_name=asset_name, folder_path=folder_path,
task_name=task_name, task_name=task_name,
env_group=env_group, env_group=env_group,
launch_type=launch_type, launch_type=launch_type,

View file

@ -11,14 +11,14 @@ class PostStartTimerHook(PostLaunchHook):
def execute(self): def execute(self):
project_name = self.data.get("project_name") project_name = self.data.get("project_name")
asset_name = self.data.get("asset_name") asset_name = self.data.get("folder_path")
task_name = self.data.get("task_name") task_name = self.data.get("task_name")
missing_context_keys = set() missing_context_keys = set()
if not project_name: if not project_name:
missing_context_keys.add("project_name") missing_context_keys.add("project_name")
if not asset_name: if not asset_name:
missing_context_keys.add("asset_name") missing_context_keys.add("folder_path")
if not task_name: if not task_name:
missing_context_keys.add("task_name") missing_context_keys.add("task_name")

View file

@ -45,12 +45,12 @@ class TimersManagerModuleRestApi:
data = await request.json() data = await request.json()
try: try:
project_name = data["project_name"] project_name = data["project_name"]
asset_name = data["asset_name"] asset_name = data["folder_path"]
task_name = data["task_name"] task_name = data["task_name"]
except KeyError: except KeyError:
msg = ( msg = (
"Payload must contain fields 'project_name," "Payload must contain fields 'project_name,"
" 'asset_name' and 'task_name'" " 'folder_path' and 'task_name'"
) )
self.log.error(msg) self.log.error(msg)
return Response(status=400, message=msg) return Response(status=400, message=msg)
@ -71,11 +71,11 @@ class TimersManagerModuleRestApi:
data = await request.json() data = await request.json()
try: try:
project_name = data['project_name'] project_name = data['project_name']
asset_name = data['asset_name'] asset_name = data['folder_path']
task_name = data['task_name'] task_name = data['task_name']
except KeyError: except KeyError:
message = ( message = (
"Payload must contain fields 'project_name, 'asset_name'," "Payload must contain fields 'project_name, 'folder_path',"
" 'task_name'" " 'task_name'"
) )
self.log.warning(message) self.log.warning(message)

View file

@ -430,7 +430,7 @@ class TimersManager(
return return
data = { data = {
"project_name": project_name, "project_name": project_name,
"asset_name": asset_name, "folder_path": asset_name,
"task_name": task_name "task_name": task_name
} }
@ -472,7 +472,7 @@ class TimersManager(
def _on_host_task_change(self, event): def _on_host_task_change(self, event):
project_name = event["project_name"] project_name = event["project_name"]
asset_name = event["asset_name"] asset_name = event["folder_path"]
task_name = event["task_name"] task_name = event["task_name"]
self.log.debug(( self.log.debug((
"Sending message that timer should change to" "Sending message that timer should change to"

View file

@ -355,7 +355,7 @@ def get_global_context():
Example: Example:
{ {
"project_name": "Commercial", "project_name": "Commercial",
"asset_name": "Bunny", "folder_path": "Bunny",
"task_name": "Animation", "task_name": "Animation",
} }
@ -366,7 +366,7 @@ def get_global_context():
return { return {
"project_name": os.environ.get("AYON_PROJECT_NAME"), "project_name": os.environ.get("AYON_PROJECT_NAME"),
"asset_name": os.environ.get("AYON_FOLDER_PATH"), "folder_path": os.environ.get("AYON_FOLDER_PATH"),
"task_name": os.environ.get("AYON_TASK_NAME"), "task_name": os.environ.get("AYON_TASK_NAME"),
} }
@ -389,7 +389,7 @@ def get_current_asset_name():
host = registered_host() host = registered_host()
if isinstance(host, HostBase): if isinstance(host, HostBase):
return host.get_current_asset_name() return host.get_current_asset_name()
return get_global_context()["asset_name"] return get_global_context()["folder_path"]
def get_current_task_name(): def get_current_task_name():
@ -481,7 +481,7 @@ def get_template_data_from_session(session=None, system_settings=None):
else: else:
context = get_current_context() context = get_current_context()
project_name = context["project_name"] project_name = context["project_name"]
asset_name = context["asset_name"] asset_name = context["folder_path"]
task_name = context["task_name"] task_name = context["task_name"]
host_name = get_current_host_name() host_name = get_current_host_name()
@ -502,7 +502,7 @@ def get_current_context_template_data(system_settings=None):
context = get_current_context() context = get_current_context()
project_name = context["project_name"] project_name = context["project_name"]
asset_name = context["asset_name"] asset_name = context["folder_path"]
task_name = context["task_name"] task_name = context["task_name"]
host_name = get_current_host_name() host_name = get_current_host_name()
@ -573,7 +573,7 @@ def get_custom_workfile_template_from_session(
else: else:
context = get_current_context() context = get_current_context()
project_name = context["project_name"] project_name = context["project_name"]
asset_name = context["asset_name"] asset_name = context["folder_path"]
task_name = context["task_name"] task_name = context["task_name"]
host_name = get_current_host_name() host_name = get_current_host_name()
@ -634,7 +634,7 @@ def change_current_context(asset_doc, task_name, template_key=None):
# Convert env keys to human readable keys # Convert env keys to human readable keys
data["project_name"] = project_name data["project_name"] = project_name
data["asset_name"] = get_asset_name_identifier(asset_doc) data["folder_path"] = get_asset_name_identifier(asset_doc)
data["task_name"] = task_name data["task_name"] = task_name
data["workdir_path"] = workdir data["workdir_path"] = workdir

View file

@ -1686,7 +1686,7 @@ class CreateContext:
host_context = self.host.get_current_context() host_context = self.host.get_current_context()
if host_context: if host_context:
project_name = host_context.get("project_name") project_name = host_context.get("project_name")
asset_name = host_context.get("asset_name") asset_name = host_context.get("folder_path")
task_name = host_context.get("task_name") task_name = host_context.get("task_name")
if isinstance(self.host, IWorkfileHost): if isinstance(self.host, IWorkfileHost):

View file

@ -148,7 +148,7 @@ class AbstractTemplateBuilder(object):
return self._host.get_current_context() return self._host.get_current_context()
return { return {
"project_name": self.project_name, "project_name": self.project_name,
"asset_name": self.current_asset_name, "folder_path": self.current_asset_name,
"task_name": self.current_task_name "task_name": self.current_task_name
} }
@ -1795,7 +1795,7 @@ class PlaceholderCreateMixin(object):
# create subset name # create subset name
context = self._builder.get_current_context() context = self._builder.get_current_context()
project_name = context["project_name"] project_name = context["project_name"]
asset_name = context["asset_name"] asset_name = context["folder_path"]
task_name = context["task_name"] task_name = context["task_name"]
if legacy_create: if legacy_create:

View file

@ -29,7 +29,7 @@ class CollectCurrentContext(pyblish.api.ContextPlugin):
context.data["projectName"] = current_context["project_name"] context.data["projectName"] = current_context["project_name"]
if not asset_name: if not asset_name:
context.data["folderPath"] = current_context["asset_name"] context.data["folderPath"] = current_context["folder_path"]
if not task_name: if not task_name:
context.data["task"] = current_context["task_name"] context.data["task"] = current_context["task_name"]

View file

@ -82,7 +82,7 @@ class WebServerTool:
context = get_global_context() context = get_global_context()
project = context["project_name"] project = context["project_name"]
asset = context["asset_name"] asset = context["folder_path"]
task = context["task_name"] task = context["task_name"]
log.info("Sending context change to {}-{}-{}".format(project, log.info("Sending context change to {}-{}-{}".format(project,
asset, asset,

View file

@ -120,12 +120,12 @@ class ApplicationAction(LauncherAction):
) )
project_name = session["AYON_PROJECT_NAME"] project_name = session["AYON_PROJECT_NAME"]
asset_name = session["AYON_FOLDER_PATH"] folder_path = session["AYON_FOLDER_PATH"]
task_name = session["AYON_TASK_NAME"] task_name = session["AYON_TASK_NAME"]
try: try:
self.application.launch( self.application.launch(
project_name=project_name, project_name=project_name,
asset_name=asset_name, folder_path=folder_path,
task_name=task_name, task_name=task_name,
**self.data **self.data
) )

View file

@ -320,7 +320,7 @@ class LoaderController(BackendLoaderController, FrontendLoaderController):
context = get_current_context() context = get_current_context()
folder_id = None folder_id = None
project_name = context.get("project_name") project_name = context.get("project_name")
asset_name = context.get("asset_name") asset_name = context.get("folder_path")
if project_name and asset_name: if project_name and asset_name:
folder = ayon_api.get_folder_by_path( folder = ayon_api.get_folder_by_path(
project_name, asset_name, fields=["id"] project_name, asset_name, fields=["id"]

View file

@ -69,10 +69,10 @@ class SceneInventoryController:
context = self.get_current_context() context = self.get_current_context()
project_name = context["project_name"] project_name = context["project_name"]
folder_name = context.get("asset_name") folder_path = context.get("folder_path")
folder_id = None folder_id = None
if folder_name: if folder_path:
folder = ayon_api.get_folder_by_path(project_name, folder_name) folder = ayon_api.get_folder_by_path(project_name, folder_path)
if folder: if folder:
folder_id = folder["id"] folder_id = folder["id"]

View file

@ -156,7 +156,7 @@ class BaseWorkfileController(
self._log = None self._log = None
self._current_project_name = None self._current_project_name = None
self._current_folder_name = None self._current_folder_path = None
self._current_folder_id = None self._current_folder_id = None
self._current_task_name = None self._current_task_name = None
self._save_is_enabled = True self._save_is_enabled = True
@ -468,12 +468,12 @@ class BaseWorkfileController(
context = self._get_host_current_context() context = self._get_host_current_context()
project_name = context["project_name"] project_name = context["project_name"]
folder_name = context["asset_name"] folder_path = context["folder_path"]
task_name = context["task_name"] task_name = context["task_name"]
current_file = self.get_current_workfile() current_file = self.get_current_workfile()
folder_id = None folder_id = None
if folder_name: if folder_path:
folder = ayon_api.get_folder_by_path(project_name, folder_name) folder = ayon_api.get_folder_by_path(project_name, folder_path)
if folder: if folder:
folder_id = folder["id"] folder_id = folder["id"]
@ -481,7 +481,7 @@ class BaseWorkfileController(
self._project_anatomy = None self._project_anatomy = None
self._current_project_name = project_name self._current_project_name = project_name
self._current_folder_name = folder_name self._current_folder_path = folder_path
self._current_folder_id = folder_id self._current_folder_id = folder_id
self._current_task_name = task_name self._current_task_name = task_name
@ -639,6 +639,7 @@ class BaseWorkfileController(
return { return {
"project_name": project_name, "project_name": project_name,
"folder_id": folder_id, "folder_id": folder_id,
"folder_path": folder["path"],
"asset_id": folder_id, "asset_id": folder_id,
"asset_name": folder["name"], "asset_name": folder["name"],
"task_id": task_id, "task_id": task_id,