From 892080ec0ff6174d5fd5de221ec4802bd21371a6 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 --- .../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 27ab57d29..c4f8fb5af 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); @@ -33,6 +35,12 @@ ctrl.opened = false; this.$onInit = function init() { + 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