Merge branch '2.0/develop' into develop

This commit is contained in:
Milan Kolar 2019-05-20 18:44:28 +02:00
commit 2460cd1fdc
236 changed files with 13976 additions and 1252 deletions

View file

@ -8,11 +8,11 @@ import avalon
import avalon.api
from avalon import schema
from avalon.vendor import toml, jsonschema
from app.api import Logger
from pypeapp import Logger
ValidationError = jsonschema.ValidationError
log = Logger.getLogger(__name__)
log = Logger().get_logger(__name__)
def get_ca_mongoid():

View file

@ -8,6 +8,8 @@ from pype import lib as pypelib
from .avalon_sync import get_config_data
from .ftrack_base_handler import BaseHandler
from pypeapp import Anatomy
class AppAction(BaseHandler):
'''Custom Action base class
@ -177,7 +179,8 @@ class AppAction(BaseHandler):
os.environ["AVALON_APP"] = self.identifier.split("_")[0]
os.environ["AVALON_APP_NAME"] = self.identifier
anatomy = pype.Anatomy
anatomy = Anatomy()
hierarchy = ""
parents = database[project_name].find_one({
"type": 'asset',
@ -190,7 +193,7 @@ class AppAction(BaseHandler):
application = avalonlib.get_application(os.environ["AVALON_APP_NAME"])
data = {
"root": os.environ["AVALON_PROJECTS"],
"root": os.environ.get("PYPE_STUDIO_PROJECTS_MOUNT"),
"project": {
"name": entity['project']['full_name'],
"code": entity['project']['name']
@ -213,12 +216,10 @@ class AppAction(BaseHandler):
except Exception:
try:
anatomy = anatomy.format(data)
work_template = os.path.join(
anatomy.work.root,
anatomy.work.folder
)
work_template = anatomy["work"]["folder"]
except Exception as e:
self.log.error(
self.log.exception(
"{0} Error in anatomy.format: {1}".format(__name__, e)
)
os.environ["AVALON_WORKDIR"] = os.path.normpath(work_template)
@ -239,13 +240,22 @@ class AppAction(BaseHandler):
tools_env = acre.get_tools(tools_attr)
env = acre.compute(tools_env)
env = acre.merge(env, current_env=dict(os.environ))
env = acre.append(dict(os.environ), env)
#
# tools_env = acre.get_tools(tools)
# env = acre.compute(dict(tools_env))
# env = acre.merge(env, dict(os.environ))
# os.environ = acre.append(dict(os.environ), env)
# os.environ = acre.compute(os.environ)
# Get path to execute
st_temp_path = os.environ['PYPE_STUDIO_TEMPLATES']
st_temp_path = os.environ['PYPE_CONFIG']
os_plat = platform.system().lower()
# Path to folder with launchers
path = os.path.join(st_temp_path, 'bin', os_plat)
path = os.path.join(st_temp_path, 'launchers', os_plat)
# Full path to executable launcher
execfile = None
@ -275,7 +285,7 @@ class AppAction(BaseHandler):
try:
fp = open(execfile)
except PermissionError as p:
self.log.error('Access denied on {0} - {1}'.format(
self.log.exception('Access denied on {0} - {1}'.format(
execfile, p))
return {
'success': False,
@ -344,6 +354,8 @@ class AppAction(BaseHandler):
# Set origin avalon environments
for key, value in env_origin.items():
if value == None:
value = ""
os.environ[key] = value
return {

View file

@ -1,7 +1,8 @@
import ftrack_api
import functools
import time
from pype import api as pype
from pype.vendor import ftrack_api
from pype.vendor.ftrack_api import session as fa_session
class MissingPermision(Exception):
@ -30,7 +31,7 @@ class BaseHandler(object):
def __init__(self, session):
'''Expects a ftrack_api.Session instance'''
self._session = session
self.log = pype.Logger.getLogger(self.__class__.__name__)
self.log = pype.Logger().get_logger(self.__class__.__name__)
# Using decorator
self.register = self.register_decorator(self.register)
@ -71,7 +72,7 @@ class BaseHandler(object):
self.type, label)
)
except Exception as e:
self.log.error('{} "{}" - Registration failed ({})'.format(
self.log.exception('{} "{}" - Registration failed ({})'.format(
self.type, label, str(e))
)
return wrapper_register
@ -94,7 +95,7 @@ class BaseHandler(object):
return result
except Exception as e:
msg = '{} "{}": Failed ({})'.format(self.type, label, str(e))
self.log.error(msg)
self.log.exception(msg)
return {
'success': False,
'message': msg
@ -110,7 +111,6 @@ class BaseHandler(object):
self.session.reset()
def _preregister(self):
# Rolecheck
if hasattr(self, "role_list") and len(self.role_list) > 0:
username = self.session.api_user
user = self.session.query(
@ -197,7 +197,9 @@ class BaseHandler(object):
_entities = event['data'].get('entities_object', None)
if (
_entities is None or
_entities[0].get('link', None) == ftrack_api.symbol.NOT_SET
_entities[0].get(
'link', None
) == fa_session.ftrack_api.symbol.NOT_SET
):
_entities = self._get_entities(event)
@ -302,7 +304,7 @@ class BaseHandler(object):
# Launch preactions
for preaction in self.preactions:
event = ftrack_api.event.base.Event(
event = fa_session.ftrack_api.event.base.Event(
topic='ftrack.action.launch',
data=dict(
actionIdentifier=preaction,
@ -314,7 +316,7 @@ class BaseHandler(object):
)
session.event_hub.publish(event, on_error='ignore')
# Relaunch this action
event = ftrack_api.event.base.Event(
event = fa_session.ftrack_api.event.base.Event(
topic='ftrack.action.launch',
data=dict(
actionIdentifier=self.identifier,
@ -415,7 +417,7 @@ class BaseHandler(object):
'applicationId=ftrack.client.web and user.id="{0}"'
).format(user_id)
self.session.event_hub.publish(
ftrack_api.event.base.Event(
fa_session.ftrack_api.event.base.Event(
topic='ftrack.action.trigger-user-interface',
data=dict(
type='message',
@ -438,7 +440,7 @@ class BaseHandler(object):
).format(user_id)
self.session.event_hub.publish(
ftrack_api.event.base.Event(
fa_session.ftrack_api.event.base.Event(
topic='ftrack.action.trigger-user-interface',
data=dict(
type='widget',