Merge branch 'develop' of github.com:pypeclub/OpenPype into feature/OP-2204_Feature---Slack-URL-to-reviewable

This commit is contained in:
Petr Kalis 2022-01-07 14:52:08 +01:00
commit e55c2e6bb6
8 changed files with 69 additions and 45 deletions

View file

@ -1,6 +1,7 @@
import openpype.api
from Qt import QtWidgets
from avalon import aftereffects
from avalon.api import CreatorError
import openpype.api
import logging
@ -27,14 +28,13 @@ class CreateRender(openpype.api.Creator):
folders=False,
footages=False)
if len(items) > 1:
self._show_msg("Please select only single composition at time.")
return False
raise CreatorError("Please select only single "
"composition at time.")
if not items:
self._show_msg("Nothing to create. Select composition " +
"if 'useSelection' or create at least " +
"one composition.")
return False
raise CreatorError("Nothing to create. Select composition " +
"if 'useSelection' or create at least " +
"one composition.")
existing_subsets = [instance['subset'].lower()
for instance in aftereffects.list_instances()]
@ -42,8 +42,7 @@ class CreateRender(openpype.api.Creator):
item = items.pop()
if self.name.lower() in existing_subsets:
txt = "Instance with name \"{}\" already exists.".format(self.name)
self._show_msg(txt)
return False
raise CreatorError(txt)
self.data["members"] = [item.id]
self.data["uuid"] = item.id # for SubsetManager
@ -54,9 +53,3 @@ class CreateRender(openpype.api.Creator):
stub.imprint(item, self.data)
stub.set_label_color(item.id, 14) # Cyan options 0 - 16
stub.rename_item(item.id, stub.PUBLISH_ICON + self.data["subset"])
def _show_msg(self, txt):
msg = QtWidgets.QMessageBox()
msg.setIcon(QtWidgets.QMessageBox.Warning)
msg.setText(txt)
msg.exec_()

View file

@ -22,21 +22,23 @@ class BackgroundLoader(api.Loader):
def load(self, context, name=None, namespace=None, data=None):
items = stub.get_items(comps=True)
existing_items = [layer.name for layer in items]
existing_items = [layer.name.replace(stub.LOADED_ICON, '')
for layer in items]
comp_name = get_unique_layer_name(
existing_items,
"{}_{}".format(context["asset"]["name"], name))
layers = get_background_layers(self.fname)
if not layers:
raise ValueError("No layers found in {}".format(self.fname))
comp = stub.import_background(None, stub.LOADED_ICON + comp_name,
layers)
if not comp:
self.log.warning(
"Import background failed.")
self.log.warning("Check host app for alert error.")
return
raise ValueError("Import background failed. "
"Please contact support")
self[:] = [comp]
namespace = namespace or comp_name

View file

@ -49,32 +49,30 @@ def modules_from_path(folder_path):
Arguments:
path (str): Path to folder containing python scripts.
return_crasher (bool): Crashed module paths with exception info
will be returned too.
Returns:
list, tuple: List of modules when `return_crashed` is False else tuple
with list of modules at first place and tuple of path and exception
info at second place.
tuple<list, list>: First list contains successfully imported modules
and second list contains tuples of path and exception.
"""
crashed = []
modules = []
output = (modules, crashed)
# Just skip and return empty list if path is not set
if not folder_path:
return modules
return output
# Do not allow relative imports
if folder_path.startswith("."):
log.warning((
"BUG: Relative paths are not allowed for security reasons. {}"
).format(folder_path))
return modules
return output
folder_path = os.path.normpath(folder_path)
if not os.path.isdir(folder_path):
log.warning("Not a directory path: {}".format(folder_path))
return modules
return output
for filename in os.listdir(folder_path):
# Ignore files which start with underscore
@ -101,7 +99,7 @@ def modules_from_path(folder_path):
)
continue
return modules, crashed
return output
def recursive_bases_from_class(klass):

View file

@ -1,6 +1,7 @@
import os
import json
import collections
import platform
import click
@ -42,18 +43,26 @@ class FtrackModule(
self.ftrack_url = ftrack_url
current_dir = os.path.dirname(os.path.abspath(__file__))
low_platform = platform.system().lower()
# Server event handler paths
server_event_handlers_paths = [
os.path.join(current_dir, "event_handlers_server")
]
server_event_handlers_paths.extend(
ftrack_settings["ftrack_events_path"]
)
settings_server_paths = ftrack_settings["ftrack_events_path"]
if isinstance(settings_server_paths, dict):
settings_server_paths = settings_server_paths[low_platform]
server_event_handlers_paths.extend(settings_server_paths)
# User event handler paths
user_event_handlers_paths = [
os.path.join(current_dir, "event_handlers_user")
]
user_event_handlers_paths.extend(
ftrack_settings["ftrack_actions_path"]
)
settings_action_paths = ftrack_settings["ftrack_actions_path"]
if isinstance(settings_action_paths, dict):
settings_action_paths = settings_action_paths[low_platform]
user_event_handlers_paths.extend(settings_action_paths)
# Prepare attribute
self.server_event_handlers_paths = server_event_handlers_paths
self.user_event_handlers_paths = user_event_handlers_paths

View file

@ -63,6 +63,12 @@ class FtrackServer:
# Iterate all paths
register_functions = []
for path in paths:
# Try to format path with environments
try:
path = path.format(**os.environ)
except BaseException:
pass
# Get all modules with functions
modules, crashed = modules_from_path(path)
for filepath, exc_info in crashed:

View file

@ -15,8 +15,16 @@
"ftrack": {
"enabled": true,
"ftrack_server": "",
"ftrack_actions_path": [],
"ftrack_events_path": [],
"ftrack_actions_path": {
"windows": [],
"darwin": [],
"linux": []
},
"ftrack_events_path": {
"windows": [],
"darwin": [],
"linux": []
},
"intent": {
"items": {
"-": "-",

View file

@ -72,6 +72,8 @@ class ProductionVersionsInputEntity(OpenPypeVersionInput):
def _get_openpype_versions(self):
versions = get_remote_versions(staging=False, production=True)
if versions is None:
return []
versions.append(get_installed_version())
return sorted(versions)
@ -82,4 +84,6 @@ class StagingVersionsInputEntity(OpenPypeVersionInput):
def _get_openpype_versions(self):
versions = get_remote_versions(staging=True, production=False)
if versions is None:
return []
return sorted(versions)

View file

@ -21,19 +21,23 @@
},
{
"type": "label",
"label": "Additional Ftrack paths"
"label": "Additional Ftrack event handlers paths"
},
{
"type": "list",
"type": "path",
"key": "ftrack_actions_path",
"label": "Action paths",
"object_type": "text"
"label": "User paths",
"use_label_wrap": true,
"multipath": true,
"multiplatform": true
},
{
"type": "list",
"type": "path",
"key": "ftrack_events_path",
"label": "Event paths",
"object_type": "text"
"label": "Server paths",
"use_label_wrap": true,
"multipath": true,
"multiplatform": true
},
{
"type": "separator"