summaryrefslogtreecommitdiffstats
path: root/provisioning-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'provisioning-model.lua')
-rw-r--r--provisioning-model.lua17
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