moved few templates to aport lib and get_hierarchy

This commit is contained in:
iLLiCiT 2019-07-31 05:32:04 +02:00
parent 399eda962d
commit aa35963514
7 changed files with 96 additions and 77 deletions

View file

@ -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"

View file

@ -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)

View file

@ -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

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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",