Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Commit

Permalink
Revert "Photoshop: New style validations for New publisher"
Browse files Browse the repository at this point in the history
  • Loading branch information
kalisp authored Dec 22, 2021
1 parent 4a2a929 commit 5dedd26
Show file tree
Hide file tree
Showing 10 changed files with 19 additions and 204 deletions.

This file was deleted.

21 changes: 0 additions & 21 deletions openpype/hosts/photoshop/plugins/publish/help/validate_naming.xml

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
from avalon import api
import pyblish.api
from avalon import photoshop

import openpype.api
from openpype.pipeline import PublishXmlValidationError
from avalon import photoshop


class ValidateInstanceAssetRepair(pyblish.api.Action):
Expand Down Expand Up @@ -58,10 +56,4 @@ def process(self, instance):
f"If that's not correct value, close workfile and "
f"reopen via Workfiles!"
)
formatting_data = {
"found": instance_asset,
"expected": current_asset
}
if instance_asset != current_asset:
raise PublishXmlValidationError(self, msg,
formatting_data=formatting_data)
assert instance_asset == current_asset, msg
24 changes: 9 additions & 15 deletions openpype/hosts/photoshop/plugins/publish/validate_naming.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import re

import pyblish.api
from avalon import photoshop

import openpype.api
from openpype.pipeline import PublishXmlValidationError
from avalon import photoshop


class ValidateNamingRepair(pyblish.api.Action):
Expand Down Expand Up @@ -71,18 +69,14 @@ class ValidateNaming(pyblish.api.InstancePlugin):
replace_char = ''

def process(self, instance):
msg = "Name \"{}\" is not allowed.".format(instance.data["name"])

formatting_data = {"error_msg": msg}
if re.search(self.invalid_chars, instance.data["name"]):
raise PublishXmlValidationError(self, msg,
formatting_data=formatting_data)

msg = "Subset \"{}\" is not allowed.".format(instance.data["subset"])
formatting_data = {"error_msg": msg}
if re.search(self.invalid_chars, instance.data["subset"]):
raise PublishXmlValidationError(self, msg,
formatting_data=formatting_data)
help_msg = ' Use Repair action (A) in Pyblish to fix it.'
msg = "Name \"{}\" is not allowed.{}".format(instance.data["name"],
help_msg)
assert not re.search(self.invalid_chars, instance.data["name"]), msg

msg = "Subset \"{}\" is not allowed.{}".format(instance.data["subset"],
help_msg)
assert not re.search(self.invalid_chars, instance.data["subset"]), msg

@classmethod
def get_replace_chars(cls):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
import collections

import pyblish.api
import openpype.api
from openpype.pipeline import PublishXmlValidationError


class ValidateSubsetUniqueness(pyblish.api.ContextPlugin):
Expand All @@ -22,18 +19,8 @@ def process(self, context):
if instance.data.get('publish'):
subset_names.append(instance.data.get('subset'))

duplicates = [item
for item, count in
collections.Counter(subset_names).items()
if count > 1]

if duplicates:
duplicates_str = ",".join(duplicates)
formatting_data = {"duplicates_str": duplicates_str}
msg = (
"Instance subset names {} are not unique.".format(
duplicates_str) +
" Remove duplicates via SubsetManager."
)
raise PublishXmlValidationError(self, msg,
formatting_data=formatting_data)
msg = (
"Instance subset names are not unique. " +
"Remove duplicates via SubsetManager."
)
assert len(subset_names) == len(set(subset_names)), msg
2 changes: 0 additions & 2 deletions openpype/pipeline/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

from .publish import (
PublishValidationError,
PublishXmlValidationError,
KnownPublishError,
OpenPypePyblishPluginMixin
)
Expand All @@ -24,7 +23,6 @@
"CreatedInstance",

"PublishValidationError",
"PublishXmlValidationError",
"KnownPublishError",
"OpenPypePyblishPluginMixin"
)
10 changes: 2 additions & 8 deletions openpype/pipeline/publish/__init__.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,20 @@
from .publish_plugins import (
PublishValidationError,
PublishXmlValidationError,
KnownPublishError,
OpenPypePyblishPluginMixin
)

from .lib import (
DiscoverResult,
publish_plugins_discover,
load_help_content_from_plugin,
load_help_content_from_filepath
publish_plugins_discover
)


__all__ = (
"PublishValidationError",
"PublishXmlValidationError",
"KnownPublishError",
"OpenPypePyblishPluginMixin",

"DiscoverResult",
"publish_plugins_discover",
"load_help_content_from_plugin",
"load_help_content_from_filepath"
"publish_plugins_discover"
)
57 changes: 0 additions & 57 deletions openpype/pipeline/publish/lib.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import os
import sys
import types
import inspect
import xml.etree.ElementTree

import six
import pyblish.plugin
Expand Down Expand Up @@ -30,61 +28,6 @@ def __setitem__(self, item, value):
self.plugins[item] = value


class HelpContent:
def __init__(self, title, description, detail=None):
self.title = title
self.description = description
self.detail = detail


def load_help_content_from_filepath(filepath):
"""Load help content from xml file.
Xml file may containt errors and warnings.
"""
errors = {}
warnings = {}
output = {
"errors": errors,
"warnings": warnings
}
if not os.path.exists(filepath):
return output
tree = xml.etree.ElementTree.parse(filepath)
root = tree.getroot()
for child in root:
child_id = child.attrib.get("id")
if child_id is None:
continue

# Make sure ID is string
child_id = str(child_id)

title = child.find("title").text
description = child.find("description").text
detail_node = child.find("detail")
detail = None
if detail_node is not None:
detail = detail_node.text
if child.tag == "error":
errors[child_id] = HelpContent(title, description, detail)
elif child.tag == "warning":
warnings[child_id] = HelpContent(title, description, detail)
return output


def load_help_content_from_plugin(plugin):
cls = plugin
if not inspect.isclass(plugin):
cls = plugin.__class__
plugin_filepath = inspect.getfile(cls)
plugin_dir = os.path.dirname(plugin_filepath)
basename = os.path.splitext(os.path.basename(plugin_filepath))[0]
filename = basename + ".xml"
filepath = os.path.join(plugin_dir, "help", filename)
return load_help_content_from_filepath(filepath)


def publish_plugins_discover(paths=None):
"""Find and return available pyblish plug-ins
Expand Down
26 changes: 1 addition & 25 deletions openpype/pipeline/publish/publish_plugins.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
from .lib import load_help_content_from_plugin


class PublishValidationError(Exception):
"""Validation error happened during publishing.
Expand All @@ -15,34 +12,13 @@ class PublishValidationError(Exception):
description(str): Detailed description of an error. It is possible
to use Markdown syntax.
"""
def __init__(self, message, title=None, description=None, detail=None):
def __init__(self, message, title=None, description=None):
self.message = message
self.title = title or "< Missing title >"
self.description = description or message
self.detail = detail
super(PublishValidationError, self).__init__(message)


class PublishXmlValidationError(PublishValidationError):
def __init__(
self, plugin, message, key=None, formatting_data=None
):
if key is None:
key = "main"

if not formatting_data:
formatting_data = {}
result = load_help_content_from_plugin(plugin)
content_obj = result["errors"][key]
description = content_obj.description.format(**formatting_data)
detail = content_obj.detail
if detail:
detail = detail.format(**formatting_data)
super(PublishXmlValidationError, self).__init__(
message, content_obj.title, description, detail
)


class KnownPublishError(Exception):
"""Publishing crashed because of known error.
Expand Down

0 comments on commit 5dedd26

Please sign in to comment.