diff options
Diffstat (limited to 'provisioning-model.lua')
-rw-r--r-- | provisioning-model.lua | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/provisioning-model.lua b/provisioning-model.lua index 5c8312e..8f57e9a 100644 --- a/provisioning-model.lua +++ b/provisioning-model.lua @@ -1104,6 +1104,7 @@ mymodule.get_group = function(self, clientdata) retval.seq = cfe({label="Sequence", seq=4}) retval.params = cfe({type="multi", value={}, label="Parameters", option={}, descr="Each selected parameter will be included in the group", seq=5}) retval.editable = cfe({type="multi", value={}, label="Editable Parameters", option={}, descr="Each selected parameter will be user editable", seq=6}) + retval.override = cfe({type="multi", value={}, label="Overridden Parameters", option={}, descr="Each selected parameter will override the parameter default from the group defaults", seq=7}) retval.defaults = cfe({type="group", value={}, label="Parameter Defaults", seq=8}) local errtxt local res, err = pcall(function() @@ -1114,6 +1115,7 @@ mymodule.get_group = function(self, clientdata) for i,p in ipairs(tmp) do retval.params.option[#retval.params.option + 1] = {value=p.param_id, label=p.label} retval.editable.option[#retval.editable.option + 1] = {value=p.param_id, label=p.label} + retval.override.option[#retval.override.option + 1] = {value=p.param_id, label=p.label} p.seq = i if p.type == "select" then sql = "SELECT * FROM provisioning_options WHERE param_id='"..provdb.escape(p.param_id).."' ORDER BY seq ASC" @@ -1144,6 +1146,7 @@ mymodule.get_group = function(self, clientdata) retval.editable.value[#retval.editable.value + 1] = p.param_id end if p.value then + retval.override.value[#retval.override.value + 1] = p.param_id if retval.defaults.value[p.param_id].type == "boolean" then retval.defaults.value[p.param_id].value = (p.value == "true") else @@ -1175,6 +1178,7 @@ mymodule.update_group = function(self, group, action, create) -- Validate the settings success = modelfunctions.validatemulti(group.value.params) and success success = modelfunctions.validatemulti(group.value.editable) and success + success = modelfunctions.validatemulti(group.value.override) and success if group.value.name.value == "" then success = false group.value.name.errtxt = "Cannot be blank" @@ -1242,15 +1246,14 @@ mymodule.update_group = function(self, group, action, create) for i,p in ipairs(group.value.editable.value) do reverseeditable[p] = i end + -- Reverse the override table for ease of use below + local reverseoverride = {} + for i,p in ipairs(group.value.override.value) do + reverseoverride[p] = "'"..provdb.escape(tostring(group.value.defaults.value[p].value)).."'" + end -- Insert the group to param entries for i,p in ipairs(group.value.params.value) do - sql = "INSERT INTO param_groups_to_params VALUES('"..provdb.escape(group.value.group_id.value).."', '"..provdb.escape(p).."', " - if group.value.defaults.value[p].value ~= group.value.defaults.value[p].default then - sql = sql.."'"..provdb.escape(tostring(group.value.defaults.value[p].value)).."'" - else - sql = sql.."null" - end - sql = sql..", '"..provdb.escape(tostring(reverseeditable[p] ~= nil)).."')" + sql = "INSERT INTO param_groups_to_params VALUES('"..provdb.escape(group.value.group_id.value).."', '"..provdb.escape(p).."', "..(reverseoverride[p] or "null")..", '"..provdb.escape(tostring(reverseeditable[p] ~= nil)).."')" runsqlcommand(sql) end |