From 6c5783cad9a4249828e8aa3077d2674781526200 Mon Sep 17 00:00:00 2001 From: Tatiana Ovchinnikova Date: Tue, 8 Nov 2022 14:40:13 -0600 Subject: Make readonly metadata properties unable to edit Image metadata properties os_hash_algo and os_hash_value are readonly, and attempts to edit them fail with unclear message. This patch makes these fields readonly in update metadata form. Also, if the existing metadata property is null, Horizon should consider it optional too, in addition to empty field fix: https://review.opendev.org/c/openstack/horizon/+/812009 Change-Id: I892465ca4688fce9f7123682d02f11c92c7d2c5c (cherry picked from commit 892080ec0ff6174d5fd5de221ec4802bd21371a6) --- .../widgets/metadata/tree/metadata-tree-item.controller.js | 8 ++++++++ horizon/static/framework/widgets/metadata/tree/tree.service.js | 2 ++ 2 files changed, 10 insertions(+) diff --git a/horizon/static/framework/widgets/metadata/tree/metadata-tree-item.controller.js b/horizon/static/framework/widgets/metadata/tree/metadata-tree-item.controller.js index 1d0720f12..6234699db 100644 --- a/horizon/static/framework/widgets/metadata/tree/metadata-tree-item.controller.js +++ b/horizon/static/framework/widgets/metadata/tree/metadata-tree-item.controller.js @@ -16,6 +16,8 @@ (function () { 'use strict'; + var READONLY_PROPERTIES = ['os_hash_algo', 'os_hash_value']; + angular .module('horizon.framework.widgets.metadata.tree') .controller('MetadataTreeItemController', MetadataTreeItemController); @@ -32,6 +34,12 @@ ctrl.formatErrorMessage = formatErrorMessage; ctrl.opened = false; + if ('item' in ctrl && 'leaf' in ctrl.item && + READONLY_PROPERTIES.includes(ctrl.item.leaf.name)) { + ctrl.item.leaf.readonly = true; + ctrl.item.leaf.required = false; + } + if ('item' in ctrl && 'leaf' in ctrl.item && ctrl.item.leaf.type === 'array') { ctrl.values = ctrl.item.leaf.items.enum.filter(filter).sort(); diff --git a/horizon/static/framework/widgets/metadata/tree/tree.service.js b/horizon/static/framework/widgets/metadata/tree/tree.service.js index 1256985f5..47ba1a844 100644 --- a/horizon/static/framework/widgets/metadata/tree/tree.service.js +++ b/horizon/static/framework/widgets/metadata/tree/tree.service.js @@ -71,6 +71,8 @@ Property.prototype.setValue = function (value) { if (value === null) { this.value = this.type !== 'array' ? null : []; + // if the existing property is null, make the field not required + this.required = false; return; } -- cgit v1.2.1