adding pype.templates for improving loading contextual templates / implement templates installing into pype.nuke.__init__

This commit is contained in:
Jakub Jezek 2018-11-27 23:41:00 +01:00
parent e58948f5ba
commit ddcb6f88de
5 changed files with 83 additions and 17 deletions

View file

@ -6,8 +6,14 @@ from avalon import api as avalon
from .launcher_actions import register_launcher_actions
from .lib import collect_container_metadata
from pype.api import Logger
log = Logger.getLogger(__name__)
import logging
log = logging.getLogger(__name__)
# do not delete these are mandatory
Anatomy = None
Dataflow = None
Metadata = None
Colorspace = None
PACKAGE_DIR = os.path.dirname(__file__)
PLUGINS_DIR = os.path.join(PACKAGE_DIR, "plugins")

View file

@ -17,6 +17,16 @@ from .action import (
from app.api import Logger
from . import (
Anatomy,
Colorspace,
Metadata,
Dataflow
)
from .templates import (
load_data_from_templates,
reset_data_from_templates
)
__all__ = [
# plugin classes
@ -32,4 +42,13 @@ __all__ = [
"Logger",
# contectual templates
"load_data_from_templates",
"reset_data_from_templates",
"Anatomy",
"Colorspace",
"Metadata",
"Dataflow"
]

View file

@ -2,19 +2,21 @@ import os
import sys
from avalon import api as avalon
from pyblish import api as pyblish
from ..api import Logger
from .. import api as pype
from pype.nuke import menu
import nuke
# removing logger handler created in avalon_core
for name, handler in [(handler.get_name(), handler)
for handler in Logger.logging.root.handlers[:]]:
for handler in pype.Logger.logging.root.handlers[:]]:
if "pype" not in str(name).lower():
Logger.logging.root.removeHandler(handler)
pype.Logger.logging.root.removeHandler(handler)
log = Logger.getLogger(__name__, "nuke")
log = pype.Logger.getLogger(__name__, "nuke")
AVALON_CONFIG = os.getenv("AVALON_CONFIG", "pype")
@ -31,7 +33,7 @@ self = sys.modules[__name__]
self.nLogger = None
class NukeHandler(Logger.logging.Handler):
class NukeHandler(pype.Logger.logging.Handler):
'''
Nuke Handler - emits logs into nuke's script editor.
warning will emit nuke.warning()
@ -39,7 +41,7 @@ class NukeHandler(Logger.logging.Handler):
'''
def __init__(self):
Logger.logging.Handler.__init__(self)
pype.Logger.logging.Handler.__init__(self)
self.set_name("Pype_Nuke_Handler")
def emit(self, record):
@ -59,11 +61,11 @@ class NukeHandler(Logger.logging.Handler):
nuke_handler = NukeHandler()
if nuke_handler.get_name() \
not in [handler.get_name()
for handler in Logger.logging.root.handlers[:]]:
Logger.logging.getLogger().addHandler(nuke_handler)
for handler in pype.Logger.logging.root.handlers[:]]:
pype.Logger.logging.getLogger().addHandler(nuke_handler)
if not self.nLogger:
self.nLogger = Logger
self.nLogger = pype.Logger
def reload_config():
@ -76,7 +78,7 @@ def reload_config():
import importlib
for module in (
"{}".format(AVALON_CONFIG),
"{}.templates".format(AVALON_CONFIG),
"{}.nuke".format(AVALON_CONFIG),
"{}.nuke.lib".format(AVALON_CONFIG),
"{}.nuke.menu".format(AVALON_CONFIG)
@ -90,7 +92,9 @@ def reload_config():
def install():
reload_config()
log.info("Registering Nuke plug-ins..")
pyblish.register_plugin_path(PUBLISH_PATH)
avalon.register_plugin_path(avalon.Loader, LOAD_PATH)
@ -112,6 +116,9 @@ def install():
menu.install()
# load data from templates
pype.load_data_from_templates()
def uninstall():
log.info("Deregistering Nuke plug-ins..")
@ -121,6 +128,9 @@ def uninstall():
pyblish.deregister_callback("instanceToggled", on_pyblish_instance_toggled)
# reset data from templates
pype.reset_data_from_templates()
def on_pyblish_instance_toggled(instance, new_value, old_value):
"""Toggle saver tool passthrough states on instance toggles."""

View file

@ -122,12 +122,9 @@ def set_writes_colorspace(write_dict):
def set_colorspace():
from app.api import Templates
from pype import api as pype
t = Templates(type=["colorspace"])
colorspace = t.colorspace
nuke_colorspace = getattr(colorspace, "nuke", None)
nuke_colorspace = getattr(pype.Colorspace, "nuke", None)
try:
set_root_colorspace(nuke_colorspace.root)

34
pype/templates.py Normal file
View file

@ -0,0 +1,34 @@
import os
from app.api import (Templates, Logger)
log = Logger.getLogger(__name__,
os.getenv("AVALON_APP", "pype-config"))
def load_data_from_templates():
from . import api
if not any([
api.Dataflow,
api.Anatomy,
api.Colorspace,
api.Metadata]
):
# base = Templates()
t = Templates(type=["anatomy", "metadata", "dataflow", "colorspace"])
api.Anatomy = t.anatomy
api.Metadata = t.metadata.format()
data = {"metadata": api.Metadata}
api.Dataflow = t.dataflow.format(data)
api.Colorspace = t.colorspace
log.info("Data from templates were Loaded...")
def reset_data_from_templates():
from . import api
api.Dataflow = None
api.Anatomy = None
api.Colorspace = None
api.Metadata = None
log.info("Data from templates were Unloaded...")