mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
Speedup of collect_instances.py
This commit is contained in:
parent
180035731b
commit
de9aca5f8f
2 changed files with 19 additions and 20 deletions
|
|
@ -18,17 +18,19 @@ class PhotoshopClientStub():
|
||||||
self.websocketserver = WebSocketServer.get_instance()
|
self.websocketserver = WebSocketServer.get_instance()
|
||||||
self.client = self.websocketserver.get_client()
|
self.client = self.websocketserver.get_client()
|
||||||
|
|
||||||
def read(self, layer):
|
def read(self, layer, layers_meta=None):
|
||||||
"""
|
"""
|
||||||
Parses layer metadata from Headline field of active document
|
Parses layer metadata from Headline field of active document
|
||||||
:param layer:
|
:param layer: <namedTuple Layer("id":XX, "name":"YYY")
|
||||||
|
:param layers_meta: full list from Headline (for performance in loops)
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
layers_data = self._get_layers_metadata()
|
if layers_meta is None:
|
||||||
|
layers_meta = self._get_layers_metadata()
|
||||||
|
|
||||||
return layers_data.get(str(layer.id))
|
return layers_meta.get(str(layer.id))
|
||||||
|
|
||||||
def imprint(self, layer, data, all_layers=None):
|
def imprint(self, layer, data, all_layers=None, layers_meta=None):
|
||||||
"""
|
"""
|
||||||
Save layer metadata to Headline field of active document
|
Save layer metadata to Headline field of active document
|
||||||
:param layer: <namedTuple> Layer("id": XXX, "name":'YYY')
|
:param layer: <namedTuple> Layer("id": XXX, "name":'YYY')
|
||||||
|
|
@ -38,13 +40,14 @@ class PhotoshopClientStub():
|
||||||
triggered
|
triggered
|
||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
layers_data = self._get_layers_metadata()
|
if not layers_meta:
|
||||||
|
layers_meta = self._get_layers_metadata()
|
||||||
# json.dumps writes integer values in a dictionary to string, so
|
# json.dumps writes integer values in a dictionary to string, so
|
||||||
# anticipating it here.
|
# anticipating it here.
|
||||||
if str(layer.id) in layers_data:
|
if str(layer.id) in layers_meta and layers_meta[str(layer.id)]:
|
||||||
layers_data[str(layer.id)].update(data)
|
layers_meta[str(layer.id)].update(data)
|
||||||
else:
|
else:
|
||||||
layers_data[str(layer.id)] = data
|
layers_meta[str(layer.id)] = data
|
||||||
|
|
||||||
# Ensure only valid ids are stored.
|
# Ensure only valid ids are stored.
|
||||||
if not all_layers:
|
if not all_layers:
|
||||||
|
|
@ -52,9 +55,9 @@ class PhotoshopClientStub():
|
||||||
layer_ids = [layer.id for layer in all_layers]
|
layer_ids = [layer.id for layer in all_layers]
|
||||||
cleaned_data = {}
|
cleaned_data = {}
|
||||||
|
|
||||||
for id in layers_data:
|
for id in layers_meta:
|
||||||
if int(id) in layer_ids:
|
if int(id) in layer_ids:
|
||||||
cleaned_data[id] = layers_data[id]
|
cleaned_data[id] = layers_meta[id]
|
||||||
|
|
||||||
payload = json.dumps(cleaned_data, indent=4)
|
payload = json.dumps(cleaned_data, indent=4)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,9 @@ import pythoncom
|
||||||
|
|
||||||
import pyblish.api
|
import pyblish.api
|
||||||
|
|
||||||
from pype.modules.websocket_server.clients.photoshop_client \
|
from pype.modules.websocket_server.clients.photoshop_client import (
|
||||||
import PhotoshopClientStub
|
PhotoshopClientStub
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class CollectInstances(pyblish.api.ContextPlugin):
|
class CollectInstances(pyblish.api.ContextPlugin):
|
||||||
|
|
@ -30,14 +31,9 @@ class CollectInstances(pyblish.api.ContextPlugin):
|
||||||
|
|
||||||
photoshop_client = PhotoshopClientStub()
|
photoshop_client = PhotoshopClientStub()
|
||||||
layers = photoshop_client.get_layers()
|
layers = photoshop_client.get_layers()
|
||||||
|
layers_meta = photoshop_client._get_layers_metadata()
|
||||||
for layer in layers:
|
for layer in layers:
|
||||||
layer_data = photoshop_client.read(layer)
|
layer_data = photoshop_client.read(layer, layers_meta)
|
||||||
self.log.info("layer_data {}".format(layer_data))
|
|
||||||
|
|
||||||
photoshop_client.imprint(layer, layer_data, layers)
|
|
||||||
new_layer_data = photoshop_client.read(layer)
|
|
||||||
assert layer_data == new_layer_data
|
|
||||||
|
|
||||||
# Skip layers without metadata.
|
# Skip layers without metadata.
|
||||||
if layer_data is None:
|
if layer_data is None:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue