mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
moved few templates to aport lib and get_hierarchy
This commit is contained in:
parent
399eda962d
commit
aa35963514
7 changed files with 96 additions and 77 deletions
16
pype/api.py
16
pype/api.py
|
|
@ -18,20 +18,14 @@ from .action import (
|
|||
|
||||
from pypeapp import Logger
|
||||
|
||||
|
||||
from .templates import (
|
||||
get_hierarchy,
|
||||
get_asset,
|
||||
set_avalon_workdir,
|
||||
get_workdir_template
|
||||
)
|
||||
|
||||
from .lib import (
|
||||
version_up,
|
||||
get_handle_irregular,
|
||||
get_asset,
|
||||
get_asset_data,
|
||||
get_project,
|
||||
get_project_data,
|
||||
get_asset_data,
|
||||
get_hierarchy,
|
||||
get_version_from_path,
|
||||
modified_environ,
|
||||
add_tool_to_environment,
|
||||
|
|
@ -61,9 +55,7 @@ __all__ = [
|
|||
"get_project",
|
||||
"get_hierarchy",
|
||||
"get_asset",
|
||||
"set_avalon_workdir",
|
||||
"get_version_from_path",
|
||||
"get_workdir_template",
|
||||
"get_version_from_path"
|
||||
"modified_environ",
|
||||
"add_tool_to_environment",
|
||||
"get_data_hierarchical_attr"
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ from pyblish import api as pyblish
|
|||
from pypeapp import execute, Logger
|
||||
|
||||
from .. import api
|
||||
from .lib import set_avalon_workdir
|
||||
|
||||
log = Logger().get_logger(__name__, "aport")
|
||||
|
||||
|
|
@ -33,7 +34,7 @@ INVENTORY_PATH = os.path.join(PLUGINS_DIR, "aport", "inventory")
|
|||
|
||||
|
||||
def install():
|
||||
api.set_avalon_workdir()
|
||||
set_avalon_workdir()
|
||||
|
||||
log.info("Registering Aport plug-ins..")
|
||||
pyblish.register_plugin_path(PUBLISH_PATH)
|
||||
|
|
|
|||
|
|
@ -2,21 +2,13 @@ import os
|
|||
import re
|
||||
import sys
|
||||
from avalon import io, api as avalon, lib as avalonlib
|
||||
from . import lib
|
||||
from pype import lib
|
||||
from pype import api as pype
|
||||
# from pypeapp.api import (Templates, Logger, format)
|
||||
from pypeapp import Logger, Anatomy
|
||||
log = Logger().get_logger(__name__, os.getenv("AVALON_APP", "pype-config"))
|
||||
|
||||
|
||||
self = sys.modules[__name__]
|
||||
self.SESSION = None
|
||||
|
||||
|
||||
def set_session():
|
||||
lib.set_io_database()
|
||||
self.SESSION = avalon.session
|
||||
|
||||
|
||||
def get_asset():
|
||||
"""
|
||||
Obtain Asset string from session or environment variable
|
||||
|
|
@ -27,9 +19,8 @@ def get_asset():
|
|||
Raises:
|
||||
log: error
|
||||
"""
|
||||
if self.SESSION is None:
|
||||
set_session()
|
||||
asset = self.SESSION.get("AVALON_ASSET", None) \
|
||||
lib.set_io_database()
|
||||
asset = io.Session.get("AVALON_ASSET", None) \
|
||||
or os.getenv("AVALON_ASSET", None)
|
||||
log.info("asset: {}".format(asset))
|
||||
assert asset, log.error("missing `AVALON_ASSET`"
|
||||
|
|
@ -38,26 +29,6 @@ def get_asset():
|
|||
return asset
|
||||
|
||||
|
||||
def get_hierarchy():
|
||||
"""
|
||||
Obtain asset hierarchy path string from mongo db
|
||||
|
||||
Returns:
|
||||
string: asset hierarchy path
|
||||
|
||||
"""
|
||||
parents = io.find_one({
|
||||
"type": 'asset',
|
||||
"name": get_asset()}
|
||||
)['data']['parents']
|
||||
|
||||
hierarchy = ""
|
||||
if parents and len(parents) > 0:
|
||||
# hierarchy = os.path.sep.join(hierarchy)
|
||||
hierarchy = os.path.join(*parents).replace("\\", "/")
|
||||
return hierarchy
|
||||
|
||||
|
||||
def get_context_data(
|
||||
project_name=None, hierarchy=None, asset=None, task_name=None
|
||||
):
|
||||
|
|
@ -75,19 +46,23 @@ def get_context_data(
|
|||
|
||||
"""
|
||||
if not task_name:
|
||||
if self.SESSION is None:
|
||||
set_session()
|
||||
task_name = self.SESSION.get("AVALON_TASK", None) \
|
||||
lib.set_io_database()
|
||||
task_name = io.Session.get("AVALON_TASK", None) \
|
||||
or os.getenv("AVALON_TASK", None)
|
||||
assert task_name, log.error(
|
||||
"missing `AVALON_TASK` in avalon session or os.environ!"
|
||||
)
|
||||
|
||||
application = avalonlib.get_application(os.environ["AVALON_APP_NAME"])
|
||||
|
||||
os.environ['AVALON_PROJECT'] = project_name
|
||||
io.Session['AVALON_PROJECT'] = project_name
|
||||
|
||||
if not hierarchy:
|
||||
hierarchy = pype.get_hierarchy()
|
||||
|
||||
project_doc = io.find_one({"type": "project"})
|
||||
|
||||
data = {
|
||||
"task": task_name,
|
||||
"asset": asset or get_asset(),
|
||||
|
|
@ -95,16 +70,15 @@ def get_context_data(
|
|||
"name": project_doc["name"],
|
||||
"code": project_doc["data"].get("code", '')
|
||||
},
|
||||
"hierarchy": hierarchy or get_hierarchy(),
|
||||
"hierarchy": hierarchy,
|
||||
"app": application["application_dir"]
|
||||
}
|
||||
return data
|
||||
|
||||
|
||||
def set_avalon_workdir(project=None,
|
||||
hierarchy=None,
|
||||
asset=None,
|
||||
task=None):
|
||||
def set_avalon_workdir(
|
||||
project=None, hierarchy=None, asset=None, task=None
|
||||
):
|
||||
"""
|
||||
Updates os.environ and session with filled workdir
|
||||
|
||||
|
|
@ -119,20 +93,20 @@ def set_avalon_workdir(project=None,
|
|||
avalon.session[AVALON_WORKDIR]: workdir path
|
||||
|
||||
"""
|
||||
if self.SESSION is None:
|
||||
set_session()
|
||||
|
||||
awd = self.SESSION.get("AVALON_WORKDIR", None) or \
|
||||
lib.set_io_database()
|
||||
awd = io.Session.get("AVALON_WORKDIR", None) or \
|
||||
os.getenv("AVALON_WORKDIR", None)
|
||||
|
||||
data = get_context_data(project, hierarchy, asset, task)
|
||||
|
||||
if (not awd) or ("{" not in awd):
|
||||
awd = get_workdir_template(data)
|
||||
anatomy_filled = Anatomy(io.Session["AVALON_PROJECT"]).format(data)
|
||||
awd = anatomy_filled["work"]["folder"]
|
||||
|
||||
awd_filled = os.path.normpath(format(awd, data))
|
||||
|
||||
self.SESSION["AVALON_WORKDIR"] = awd_filled
|
||||
io.Session["AVALON_WORKDIR"] = awd_filled
|
||||
os.environ["AVALON_WORKDIR"] = awd_filled
|
||||
log.info("`AVALON_WORKDIR` fixed to: {}".format(awd_filled))
|
||||
|
||||
|
|
@ -154,7 +128,8 @@ def get_workdir_template(data=None):
|
|||
try:
|
||||
work = anatomy_filled["work"]
|
||||
except Exception as e:
|
||||
log.error("{0} Error in "
|
||||
"get_workdir_template(): {1}".format(__name__, e))
|
||||
log.error(
|
||||
"{0} Error in get_workdir_template(): {1}".format(__name__, str(e))
|
||||
)
|
||||
|
||||
return work["folder"]
|
||||
return work
|
||||
20
pype/lib.py
20
pype/lib.py
|
|
@ -22,6 +22,26 @@ def get_handle_irregular(asset):
|
|||
return (handle_start, handle_end)
|
||||
|
||||
|
||||
def get_hierarchy():
|
||||
"""
|
||||
Obtain asset hierarchy path string from mongo db
|
||||
|
||||
Returns:
|
||||
string: asset hierarchy path
|
||||
|
||||
"""
|
||||
parents = io.find_one({
|
||||
"type": 'asset',
|
||||
"name": get_asset()}
|
||||
)['data']['parents']
|
||||
|
||||
hierarchy = ""
|
||||
if parents and len(parents) > 0:
|
||||
# hierarchy = os.path.sep.join(hierarchy)
|
||||
hierarchy = os.path.join(*parents).replace("\\", "/")
|
||||
return hierarchy
|
||||
|
||||
|
||||
def add_tool_to_environment(tools):
|
||||
"""
|
||||
It is adding dynamic environment to os environment.
|
||||
|
|
|
|||
|
|
@ -6,10 +6,9 @@ import acre
|
|||
|
||||
from avalon import api, lib
|
||||
import pype.api as pype
|
||||
from pype.aport import lib as aportlib
|
||||
|
||||
from pype.api import Logger
|
||||
|
||||
log = Logger().get_logger(__name__, "aport")
|
||||
log = pype.Logger().get_logger(__name__, "aport")
|
||||
|
||||
|
||||
class Aport(api.Action):
|
||||
|
|
@ -50,15 +49,16 @@ class Aport(api.Action):
|
|||
env = acre.merge(env, current_env=dict(os.environ))
|
||||
|
||||
if not env.get('AVALON_WORKDIR', None):
|
||||
os.environ["AVALON_WORKDIR"] = pype.get_workdir_template()
|
||||
os.environ["AVALON_WORKDIR"] = aportlib.get_workdir_template()
|
||||
|
||||
env.update(dict(os.environ))
|
||||
|
||||
try:
|
||||
lib.launch(executable=executable,
|
||||
args=arguments,
|
||||
environment=env
|
||||
)
|
||||
lib.launch(
|
||||
executable=executable,
|
||||
args=arguments,
|
||||
environment=env
|
||||
)
|
||||
except Exception as e:
|
||||
log.error(e)
|
||||
return
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import sys
|
|||
from pprint import pprint
|
||||
import acre
|
||||
|
||||
from avalon import api, lib
|
||||
from avalon import api, lib, io
|
||||
import pype.api as pype
|
||||
|
||||
|
||||
|
|
@ -44,12 +44,42 @@ class PremierePro(api.Action):
|
|||
env = acre.merge(env, current_env=dict(os.environ))
|
||||
|
||||
if not env.get('AVALON_WORKDIR', None):
|
||||
os.environ["AVALON_WORKDIR"] = pype.get_workdir_template()
|
||||
project_name = env.get("AVALON_PROJECT")
|
||||
anatomy = Anatomy(project_name)
|
||||
os.environ['AVALON_PROJECT'] = project_name
|
||||
io.Session['AVALON_PROJECT'] = project_name
|
||||
|
||||
task_name = os.environ.get(
|
||||
"AVALON_TASK", io.Session["AVALON_TASK"]
|
||||
)
|
||||
asset_name = os.environ.get(
|
||||
"AVALON_ASSET", io.Session["AVALON_ASSET"]
|
||||
)
|
||||
application = lib.get_application(
|
||||
os.environ["AVALON_APP_NAME"]
|
||||
)
|
||||
|
||||
project_doc = io.find_one({"type": "project"})
|
||||
data = {
|
||||
"task": task_name,
|
||||
"asset": asset_name,
|
||||
"project": {
|
||||
"name": project_doc["name"],
|
||||
"code": project_doc["data"].get("code", '')
|
||||
},
|
||||
"hierarchy": pype.get_hierarchy(),
|
||||
"app": application["application_dir"]
|
||||
}
|
||||
anatomy_filled = anatomy.format(data)
|
||||
workdir = anatomy_filled["work"]["folder"]
|
||||
|
||||
os.environ["AVALON_WORKDIR"] = workdir
|
||||
|
||||
env.update(dict(os.environ))
|
||||
|
||||
lib.launch(executable=executable,
|
||||
args=arguments,
|
||||
environment=env
|
||||
)
|
||||
lib.launch(
|
||||
executable=executable,
|
||||
args=arguments,
|
||||
environment=env
|
||||
)
|
||||
return
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ from avalon import api as avalon
|
|||
from pyblish import api as pyblish
|
||||
from pypeapp import Logger
|
||||
from .. import api
|
||||
from pype.aport.lib import set_avalon_workdir
|
||||
|
||||
from ..widgets.message_window import message
|
||||
|
||||
|
|
@ -75,7 +76,7 @@ def extensions_sync():
|
|||
|
||||
def install():
|
||||
|
||||
api.set_avalon_workdir()
|
||||
set_avalon_workdir()
|
||||
log.info("Registering Premiera plug-ins..")
|
||||
|
||||
reg_paths = request_aport("/api/register_plugin_path",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue