diff --git a/openpype/hosts/houdini/plugins/publish/collect_inputs.py b/openpype/hosts/houdini/plugins/publish/collect_inputs.py
index 9ee0248bd9..0b54b244bb 100644
--- a/openpype/hosts/houdini/plugins/publish/collect_inputs.py
+++ b/openpype/hosts/houdini/plugins/publish/collect_inputs.py
@@ -106,7 +106,7 @@ class CollectUpstreamInputs(pyblish.api.InstancePlugin):
# If no valid output node is set then ignore it as validation
# will be checking those cases.
self.log.debug(
- "No output node found, skipping " "collecting of inputs.."
+ "No output node found, skipping collecting of inputs.."
)
return
diff --git a/openpype/hosts/houdini/plugins/publish/validate_alembic_input_node.py b/openpype/hosts/houdini/plugins/publish/validate_alembic_input_node.py
index bafb206bd3..b0cf4cdc58 100644
--- a/openpype/hosts/houdini/plugins/publish/validate_alembic_input_node.py
+++ b/openpype/hosts/houdini/plugins/publish/validate_alembic_input_node.py
@@ -22,7 +22,7 @@ class ValidateAlembicInputNode(pyblish.api.InstancePlugin):
invalid = self.get_invalid(instance)
if invalid:
raise PublishValidationError(
- ("Primitive types found that are not supported"
+ ("Primitive types found that are not supported "
"for Alembic output."),
title=self.label
)
diff --git a/openpype/plugins/publish/cleanup_explicit.py b/openpype/plugins/publish/cleanup_explicit.py
index 88bba34532..983c9223c6 100644
--- a/openpype/plugins/publish/cleanup_explicit.py
+++ b/openpype/plugins/publish/cleanup_explicit.py
@@ -73,7 +73,7 @@ class ExplicitCleanUp(pyblish.api.ContextPlugin):
)
# Delete folders with it's content
- succeded_dirs = set()
+ succeeded = set()
for dirpath in dirpaths:
# Check if directory still exists
# - it is possible that directory was already deleted with
@@ -81,13 +81,13 @@ class ExplicitCleanUp(pyblish.api.ContextPlugin):
if os.path.exists(dirpath):
try:
shutil.rmtree(dirpath)
- succeded_dirs.add(dirpath)
+ succeeded.add(dirpath)
except Exception:
failed.append(dirpath)
- if succeded_dirs:
+ if succeeded:
self.log.info(
- "Removed direcoties:\n{}".format("\n".join(succeded_dirs))
+ "Removed directories:\n{}".format("\n".join(succeeded))
)
# Prepare lines for report of failed removements
diff --git a/openpype/plugins/publish/collect_anatomy_instance_data.py b/openpype/plugins/publish/collect_anatomy_instance_data.py
index 3858b4725e..48171aa957 100644
--- a/openpype/plugins/publish/collect_anatomy_instance_data.py
+++ b/openpype/plugins/publish/collect_anatomy_instance_data.py
@@ -144,7 +144,7 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
None
"""
- self.log.debug("Qeurying latest versions for instances.")
+ self.log.debug("Querying latest versions for instances.")
hierarchy = {}
names_by_asset_ids = collections.defaultdict(set)
@@ -153,7 +153,7 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
latest_version = instance.data.get("latestVersion")
instance.data["latestVersion"] = latest_version
- # Skip instances withou "assetEntity"
+ # Skip instances without "assetEntity"
asset_doc = instance.data.get("assetEntity")
if not asset_doc:
continue
@@ -162,7 +162,7 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
asset_id = asset_doc["_id"]
subset_name = instance.data["subset"]
- # Prepare instance hiearchy for faster filling latest versions
+ # Prepare instance hierarchy for faster filling latest versions
if asset_id not in hierarchy:
hierarchy[asset_id] = {}
if subset_name not in hierarchy[asset_id]:
@@ -226,7 +226,7 @@ class CollectAnatomyInstanceData(pyblish.api.ContextPlugin):
"version": version_number
}
- # Hiearchy
+ # Hierarchy
asset_doc = instance.data.get("assetEntity")
if (
asset_doc
diff --git a/openpype/plugins/publish/integrate_hero_version.py b/openpype/plugins/publish/integrate_hero_version.py
index 5f4d284740..05d383415b 100644
--- a/openpype/plugins/publish/integrate_hero_version.py
+++ b/openpype/plugins/publish/integrate_hero_version.py
@@ -65,7 +65,7 @@ class IntegrateHeroVersion(pyblish.api.InstancePlugin):
published_repres = instance.data.get("published_representations")
if not published_repres:
self.log.debug(
- "*** There are not published representations on the instance."
+ "*** There are no published representations on the instance."
)
return
diff --git a/openpype/plugins/publish/validate_containers.py b/openpype/plugins/publish/validate_containers.py
index 79759450e1..8dc0c61cab 100644
--- a/openpype/plugins/publish/validate_containers.py
+++ b/openpype/plugins/publish/validate_containers.py
@@ -23,7 +23,7 @@ class ValidateContainers(OptionalPyblishPluginMixin,
"""Containers are must be updated to latest version on publish."""
- label = "Validate Containers"
+ label = "Validate Outdated Containers"
order = pyblish.api.ValidatorOrder
hosts = ["maya", "houdini", "nuke", "harmony", "photoshop", "aftereffects"]
optional = True
diff --git a/openpype/plugins/publish/validate_version.py b/openpype/plugins/publish/validate_version.py
index b91633430f..2b919a3119 100644
--- a/openpype/plugins/publish/validate_version.py
+++ b/openpype/plugins/publish/validate_version.py
@@ -1,10 +1,11 @@
import pyblish.api
+from openpype.pipeline.publish import PublishValidationError
class ValidateVersion(pyblish.api.InstancePlugin):
"""Validate instance version.
- Pype is not allowing overwiting previously published versions.
+ OpenPype does not allow overwriting previously published versions.
"""
order = pyblish.api.ValidatorOrder
@@ -20,11 +21,25 @@ class ValidateVersion(pyblish.api.InstancePlugin):
version = instance.data.get("version")
latest_version = instance.data.get("latestVersion")
- if latest_version is not None:
+ if latest_version is not None and int(version) <= int(latest_version):
+ # TODO: Remove full non-html version upon drop of old publisher
msg = (
- "Version `{0}` from instance `{1}` that you are trying to"
- " publish, already exists in the database. Version in"
- " database: `{2}`. Please version up your workfile to a higher"
- " version number than: `{2}`."
+ "Version '{0}' from instance '{1}' that you are "
+ " trying to publish is lower or equal to an existing version "
+ " in the database. Version in database: '{2}'."
+ "Please version up your workfile to a higher version number "
+ "than: '{2}'."
).format(version, instance.data["name"], latest_version)
- assert (int(version) > int(latest_version)), msg
+
+ msg_html = (
+ "Version {0} from instance {1} that you are "
+ " trying to publish is lower or equal to an existing version "
+ " in the database. Version in database: {2}.
"
+ "Please version up your workfile to a higher version number "
+ "than: {2}."
+ ).format(version, instance.data["name"], latest_version)
+ raise PublishValidationError(
+ title="Higher version of publish already exists",
+ message=msg,
+ description=msg_html
+ )
diff --git a/openpype/settings/lib.py b/openpype/settings/lib.py
index 288c587d03..3a29f907be 100644
--- a/openpype/settings/lib.py
+++ b/openpype/settings/lib.py
@@ -581,7 +581,7 @@ def load_jsons_from_dir(path, *args, **kwargs):
Data are loaded recursively from a directory and recreate the
hierarchy as a dictionary.
- Entered path hiearchy:
+ Entered path hierarchy:
|_ folder1
| |_ data1.json
|_ folder2
diff --git a/openpype/tools/publisher/widgets/assets_widget.py b/openpype/tools/publisher/widgets/assets_widget.py
index 996c9029d4..0eb79e3e08 100644
--- a/openpype/tools/publisher/widgets/assets_widget.py
+++ b/openpype/tools/publisher/widgets/assets_widget.py
@@ -86,9 +86,9 @@ class CreateWidgetAssetsWidget(SingleSelectAssetsWidget):
class AssetsHierarchyModel(QtGui.QStandardItemModel):
- """Assets hiearrchy model.
+ """Assets hierarchy model.
- For selecting asset for which should beinstance created.
+ For selecting asset for which an instance should be created.
Uses controller to load asset hierarchy. All asset documents are stored by
their parents.