From 3ef565ea82a711a5e42d90a23f7b8bec8a1d3d94 Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Mon, 28 Dec 2015 04:30:01 +0000 Subject: Clean up group defaults so you can specify whether or not to override the parameter default In general, device and reg groups do not override anything and service groups override all parameters --- provisioning-model.lua | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'provisioning-model.lua') 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 -- cgit v1.2.3