From 543533bde32f2fa79230c9509425cff8a79b72b7 Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Thu, 20 Aug 2020 15:12:19 +0200 Subject: [PATCH] TT#89200 fix workaround logic for backward-incompatible prefs Change-Id: I2485d8cc4852fa83ee783c88e5a20b3dc884f666 --- lib/NGCP/Panel/Utils/Preferences.pm | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/lib/NGCP/Panel/Utils/Preferences.pm b/lib/NGCP/Panel/Utils/Preferences.pm index b0edd1cf6d..eb77cabcae 100644 --- a/lib/NGCP/Panel/Utils/Preferences.pm +++ b/lib/NGCP/Panel/Utils/Preferences.pm @@ -327,7 +327,7 @@ sub prepare_resource { $value = $pref->value; } # SWITCH eval { - $value = _api_transform_out($c, $pref->attribute, $pref->value); + $value = _api_transform_out($c, $pref->attribute, $value); }; if ($@) { $c->log->error("Failed to transform pref value - $@"); @@ -1001,14 +1001,20 @@ sub _api_transform_out { if ($c->request and $c->request->path =~/^api\//i) { $API_TRANSFORM_OUT = _init_transform($API_TRANSFORM_OUT,$c->config->{preference_out_transformations}); if (exists $API_TRANSFORM_OUT->{$meta->attribute}) { - if (defined $value and exists $API_TRANSFORM_OUT->{$meta->attribute}->{$value}) { - $value = $API_TRANSFORM_OUT->{$meta->attribute}->{$value}; - if ('CODE' eq ref $value) { - eval { - $value = $value->($meta,$value); - }; - if ($@) { - die($meta->attribute . ": " . $@); + if (defined $value) { + my $v = $value; + if (JSON::is_bool($v)) { + $v = $v ? 1 : 0 ; + } + if (exists $API_TRANSFORM_OUT->{$meta->attribute}->{$v}) { + $value = $API_TRANSFORM_OUT->{$meta->attribute}->{$v}; + if ('CODE' eq ref $value) { + eval { + $value = $value->($meta,$value); + }; + if ($@) { + die($meta->attribute . ": " . $@); + } } } }