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.