From f24b912e8a33f74f66398073d057d495c12b6249 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 9 Nov 2021 15:44:44 +0100 Subject: [PATCH 1/4] OP-1950 - added endpoint for configured extensions --- .../webserver_service/webpublish_routes.py | 20 +++++++++++++++++++ .../webserver_service/webserver_cli.py | 10 +++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py b/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py index 920ed042dc..4a63b0af07 100644 --- a/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py +++ b/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py @@ -12,6 +12,7 @@ from avalon.api import AvalonMongoDB from openpype.lib import OpenPypeMongoConnection from openpype_modules.avalon_apps.rest_api import _RestApiEndpoint from openpype.lib.plugin_tools import parse_json +from openpype.settings import get_project_settings from openpype.lib import PypeLogger @@ -277,3 +278,22 @@ class PublishesStatusEndpoint(_RestApiEndpoint): body=self.resource.encode(output), content_type="application/json" ) + + +class ConfiguredExtensionsEndpoint(_RestApiEndpoint): + """Returns list of extensions which have mapping to family.""" + async def get(self, project_name=None) -> Response: + sett = get_project_settings(project_name) + + configured = [] + collect_conf = sett["webpublisher"]["publish"]["CollectPublishedFiles"] + for _, mapping in collect_conf.get("task_type_to_family", {}).items(): + for _family, config in mapping.items(): + configured.extend(config["extensions"]) + configured = set(configured) + + return Response( + status=200, + body=self.resource.encode(sorted(list(configured))), + content_type="application/json" + ) diff --git a/openpype/hosts/webpublisher/webserver_service/webserver_cli.py b/openpype/hosts/webpublisher/webserver_service/webserver_cli.py index d00d269059..bf828070c1 100644 --- a/openpype/hosts/webpublisher/webserver_service/webserver_cli.py +++ b/openpype/hosts/webpublisher/webserver_service/webserver_cli.py @@ -14,7 +14,8 @@ from .webpublish_routes import ( WebpublisherHiearchyEndpoint, WebpublisherProjectsEndpoint, BatchStatusEndpoint, - PublishesStatusEndpoint + PublishesStatusEndpoint, + ConfiguredExtensionsEndpoint ) @@ -49,6 +50,13 @@ def run_webserver(*args, **kwargs): hiearchy_endpoint.dispatch ) + configured_ext_endpoint = ConfiguredExtensionsEndpoint(resource) + server_manager.add_route( + "GET", + "/api/webpublish/configured_ext/{project_name}", + configured_ext_endpoint.dispatch + ) + # triggers publish webpublisher_task_publish_endpoint = \ WebpublisherBatchPublishEndpoint(resource) From f0c49b8daeaf0140f1c767c0bb20b587542222bb Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 12 Nov 2021 12:36:19 +0100 Subject: [PATCH 2/4] OP-1950 - changed returned format of ConfiguredExtensionsEndpoint to dictionary --- .../webserver_service/webpublish_routes.py | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py b/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py index 4a63b0af07..e444f5a1fe 100644 --- a/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py +++ b/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py @@ -35,6 +35,8 @@ class RestApiResource: return value.isoformat() if isinstance(value, ObjectId): return str(value) + if isinstance(value, set): + return list(value) raise TypeError(value) @classmethod @@ -281,19 +283,31 @@ class PublishesStatusEndpoint(_RestApiEndpoint): class ConfiguredExtensionsEndpoint(_RestApiEndpoint): - """Returns list of extensions which have mapping to family.""" + """Returns dict of extensions which have mapping to family. + + Returns: + { + "file_exts": [], + "sequence_exts": [] + } + """ async def get(self, project_name=None) -> Response: sett = get_project_settings(project_name) - configured = [] + configured = { + "file_exts": set(), + "sequence_exts": set() + } collect_conf = sett["webpublisher"]["publish"]["CollectPublishedFiles"] for _, mapping in collect_conf.get("task_type_to_family", {}).items(): for _family, config in mapping.items(): - configured.extend(config["extensions"]) - configured = set(configured) + if config["is_sequence"]: + configured["sequence_exts"].update(config["extensions"]) + else: + configured["file_exts"].update(config["extensions"]) return Response( status=200, - body=self.resource.encode(sorted(list(configured))), + body=self.resource.encode(dict(configured)), content_type="application/json" ) From c5ac37e629f655bed9bff00972fc0cafeb35cca4 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 12 Nov 2021 12:47:51 +0100 Subject: [PATCH 3/4] OP-1950 - added extensions for Studio Processing Hardcoded for now --- .../hosts/webpublisher/webserver_service/webpublish_routes.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py b/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py index deea894045..a7a1e0920b 100644 --- a/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py +++ b/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py @@ -323,7 +323,9 @@ class ConfiguredExtensionsEndpoint(_RestApiEndpoint): configured = { "file_exts": set(), - "sequence_exts": set() + "sequence_exts": set(), + # workfiles that could have "Studio Procesing" hardcoded for now + "studio_exts": set("psd", "psb", "tvpp", "tvp") } collect_conf = sett["webpublisher"]["publish"]["CollectPublishedFiles"] for _, mapping in collect_conf.get("task_type_to_family", {}).items(): From 30e36cd0019a7cba7aedcb21a372b2a7be292c7a Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 12 Nov 2021 12:49:21 +0100 Subject: [PATCH 4/4] OP-1950 - fix - added extensions for Studio Processing --- .../hosts/webpublisher/webserver_service/webpublish_routes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py b/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py index a7a1e0920b..a904de0be8 100644 --- a/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py +++ b/openpype/hosts/webpublisher/webserver_service/webpublish_routes.py @@ -325,7 +325,7 @@ class ConfiguredExtensionsEndpoint(_RestApiEndpoint): "file_exts": set(), "sequence_exts": set(), # workfiles that could have "Studio Procesing" hardcoded for now - "studio_exts": set("psd", "psb", "tvpp", "tvp") + "studio_exts": set(["psd", "psb", "tvpp", "tvp"]) } collect_conf = sett["webpublisher"]["publish"]["CollectPublishedFiles"] for _, mapping in collect_conf.get("task_type_to_family", {}).items():